选择
IFNULL(SUM(IF(A=1 和 B=2, '正确', NULL)),0)
从
表
请我在查询中使用上面的此类函数。虽然它有效,但我想知道这是否是在 mysql 中的一个查询中处理多个条件的正确方法。谢谢
最佳答案
没有。这是不正确的。您无法对字符串值求和。 MySQL 会将其转换为数字。因为'正确'
以字母开头,所以您的查询将始终返回 0。
我认为你打算:
SELECT SUM(IF(A=1 and B=2, 1, 0)) as Correct
FROM table
请注意,这消除了外部 ifnull()
。我还建议使用 COALESCE()
而不是 IF()
,因为它是 ANSI 标准功能。然而,这个条件不是必需的。
查询可以进一步简化。事实上,编写此查询的最佳方法是:
SELECT COUNT(*)
FROM table
WHERE A = 1 and B = 2;
一般来说,最好在 WHERE
子句中编写带有条件的查询,而不是在条件语句中(如果可能)。这减少了查询其余部分需要处理的行数。
关于mysql - 单个 SUMIF 函数中的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31048607/