我正在尝试检查一个特定的匹配项
列表是否具有状态:3 和 5,所以假设我有一个这样的匹配项
列表:
id | round_id | status
1 28 3
2 28 3
3 28 5
4 28 5
查询结果应返回 true
,因为所有可用的 匹配
都具有状态 3
或 5
。我写了这个查询:
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/