mysql - 无法检查所有记录是否在字段中具有特定值

标签 mysql sql pdo

我正在尝试检查一个特定的匹配项列表是否具有状态:3 和 5,所以假设我有一个这样的匹配项列表:

id | round_id | status 
 1      28        3
 2      28        3 
 3      28        5
 4      28        5

查询结果应返回 true,因为所有可用的 匹配 都具有状态 35。我写了这个查询:

SELECT (SELECT COUNT(DISTINCT `status`) FROM `match` WHERE round_id = 28 AND (`status` = 3 OR`status` = 5)) = 1 AS result

但这将返回 0

最佳答案

你可以这样做:

select ( count(*) = sum(status in (3, 5)) ) as flag_3_5
from matches
where round_id = 28;

您可以使用 group by round_id 对所有回合执行此操作。

MySQL 将 bool 表达式视为数字上下文中的数字,true 为“1”,false 为“0”。因此,sum(status in (3, 5)) 计算具有这两种状态的行数。比较检查这些是否都是行。

关于mysql - 无法检查所有记录是否在字段中具有特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51288987/

相关文章:

php - Mysql INsert 附加变量

MySql 对连接查询的计数非常慢

sql - MySQL 错误#1064

php - 什么样的代码可以进入PDO交易?

php - 在其自己的类中设置从 PDO 返回的对象

mysql - 在 MYSQL 中排名并列结果

php - 数据未从 mysql 获取

sql - 如何选择早于特定日期的行?

php - 如何比较两个 MySQL 查询中的值

mysql - #1064 MySQL 错误。带有 MRG_MYISAM 引擎的 utf8_general_ci