多类型条件列求和返回NULL?AND运算符为何失效
为什么SQL中用AND同时匹配两个type值会返回NULL?
你写的第二个SQL里,type = 'cleaning' AND type = 'painting'这个条件根本不可能命中任何记录——单条费用记录的type字段只能存一个值,不可能同时等于两个不同的字符串。WHERE条件筛选不到数据,SUM函数在没有输入行的时候就会返回NULL,这就是你得到NULL的原因。
要统计id=1且type是cleaning或painting的费用总和,你需要把AND换成OR,或者用IN来简化条件:
方法1:使用OR
SELECT SUM(expense) AS total FROM expenses WHERE id = 1 AND (type = 'cleaning' OR type = 'painting');
方法2:使用IN(更简洁)
SELECT SUM(expense) AS total FROM expenses WHERE id = 1 AND type IN ('cleaning', 'painting');
这两种写法都会筛选出id=1、type为cleaning或painting的所有记录,然后对这些记录的expense字段求和,就能得到你预期的3000了。
内容的提问来源于stack exchange,提问作者Scandidi
相关产品推荐
相关产品推荐

