如何从VALUES值列表中查询数据并过滤等于0的数值
你可以直接在原SQL基础上增加WHERE条件过滤掉score等于0的行即可,同时修正原SQL多余的括号问题,最终可运行的语句如下:
SELECT MIN(score) FROM (VALUES (0), (1), (2)) AS score(score) WHERE score <> 0
说明
- 过滤条件可以写
score <> 0或者score != 0,两种写法在绝大多数主流SQL引擎中都兼容 - 语句执行时会先排除值为0的行,再对剩余的1、2计算最小值,最终返回结果为1,符合需求
可选方案
如果你不想加WHERE子句,也可以通过CASE表达式在聚合时跳过0值(MIN函数会自动忽略NULL值),写法如下:
SELECT MIN(CASE WHEN score = 0 THEN NULL ELSE score END) FROM (VALUES (0), (1), (2)) AS score(score)
内容的提问来源于stack exchange,提问作者user2096512
相关产品推荐
相关产品推荐

