单个SUMIF函数中的多个条件

时间:2015-06-25 11:06:12

标签: mysql

SELECT IFNULL(SUM(IF(A=1 and B=2, 'Correct', NULL)),0) FROM table

请在我的查询中使用上述功能。虽然它有效,但我想知道这是否是在mysql中单个查询中处理多个条件的正确方法。感谢

1 个答案:

答案 0 :(得分:2)

没有。这是不正确的。您不能对字符串值求和。 MySQL会将其转换为数字。因为'Correct'以字母开头,所以您的查询将始终返回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子句中的条件而不是条件语句(如果可能)编写查询。这减少了查询其余部分需要处理的行数。