Oracle查询:获取满足两列数值之和小于100的所有条目
解决Oracle数据库筛选目标行的问题
咱直接说核心:你需要的是逐行计算foo和bar的数值和,筛选出和小于100的行,完全不需要用SUM()聚合函数——因为SUM()是用来对整列所有行的数据求和的,和咱们要的逐行判断逻辑根本不是一回事。
正确的SQL查询语句
SELECT * FROM your_table_name -- 替换成你的实际表名 WHERE foo + bar < 100;
为什么不能用SUM函数?
- 举个反例,如果写
SUM(foo) + SUM(bar) < 100,Oracle会先把所有行的foo值加总,再把所有行的bar值加总,最后把这两个总和相加判断是否小于100。这显然不是你要的结果,你要的是单一行内两列的和满足条件。 - 上面的正确语句会遍历每一行,计算当前行的
foo+bar,只要结果小于100就返回该行,正好匹配你预期返回第2、3行的需求(这两行的和分别是51和76,都符合<100的条件)。
内容的提问来源于stack exchange,提问作者user320550
相关产品推荐
相关产品推荐

