SELECT
IFNULL(SUM(IF(A=1 and B=2, 'Correct', NULL)),0)
FROM
table
请在我的查询中使用上述功能。虽然它有效,但我想知道这是否是在mysql中单个查询中处理多个条件的正确方法。感谢
答案 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
子句中的条件而不是条件语句(如果可能)编写查询。这减少了查询其余部分需要处理的行数。