我有一个费用表,其中多个费用可以绑定到一个ID,但这些费用中的每一个都可以有一个特定的类型。
的数据
我可以得到一个类型的总和。
SELECT
SUM(expense) AS total
FROM expenses
WHERE id = 1 AND type = 'cleaning';
字符串
但是我想得到一个有两种类型的费用的总和,所以我试着
SELECT
SUM(expense) AS total
FROM expenses
WHERE id = 1
AND type = 'cleaning'
AND type = 'painting';
型
我希望它返回3000,但它返回NULL。
为什么AND运算符在这种情况下不起作用?
3条答案
按热度按时间nzkunb0c1#
为每行计算
where
子句。不存在以下行:字符串
因为
sum
看不到行,所以它返回null
。rjee0c152#
你
字符串
查询表明您要对
SUM
同时等于cleaning
和painting
的所有记录的expense
进行SUM
。由于
Type
要么不匹配这两个值中的任何一个,要么只匹配其中一个,而您的条件要求它匹配这两个值,因此没有记录匹配该条件,因此SUM
计算空集的和。试试看:
型
或
型
而不是.
zed5wv103#
这是因为根据查询,您正在搜索一个既有油漆又有清洁的类型。
你可以尝试使用OR来获得油漆和清洁的总和。
字符串