mysql - 单个 SUMIF 函数中的多个条件

标签 mysql

选择 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/

相关文章:

python - 500 内部服务器错误 - GCP App Engine

mysql - 尝试使用 phpmyadmin 版本 4.3.12 浏览表时处理请求 500 时出错

mysql - 创建新模型不起作用 - 没有错误

mysql - 用户库存数据库设计?

java - 根据时间重置值 MySQL

php - 如何使用 Codeigniter 上传文本文件并将其数据导入到 sql 中?

mysql - 错误: select command denied to user '<userid>' @'<ip-address>' for table '<table-name>'

mysql - 删除 MySQL 中的所有数据库

mysql - 客户必须至少有 3 封电子邮件

php - Yii2 关系数据库困惑