首页 > 解决方案 > 从具有 value1 但不是 value2 的表中检索项目

问题描述

我有一张桌子t1(下面是一个非常简化的真实桌子)

Name Subject Pass
A    Math    Yes
A    English  No
A    Science  No
B    Math     No
B    English  No
B    Science  No

我需要查询所有未通过任何主题的名称(通过=否)

`Select distinct(name) from t1 where Pass = 'No' and Pass <> 'Yes' 不起作用

标签: mysqlsql

解决方案


Select distinct(name) from t1 where Pass = 'No' and Pass <> 'Yes'

这不起作用,因为 WHERE 子句中的表达式一次计算一行,而不是整个组。您的Pass列不能在任何给定行上同时具有“否”和“是”值,因此上面的查询将仅过滤 Pass =“否”的行,而不管是否有其他行具有“是”。

对于您的查询的解决方案,您可以这样写:

SELECT name
FROM t1
GROUP BY name
HAVING SUM(Pass = 'Yes') = 0

推荐阅读