Sql 选择与一个值匹配但与另一个值不存在的所有记录

Sql 选择与一个值匹配但与另一个值不存在的所有记录,sql,Sql,我正在尝试选择其他记录中具有“已通过”但没有“失败”状态的所有ID。显然,ID不是这个表的主键。但这不起作用,它只查看给定的记录,而不是所有的记录,我想我需要某种聚合函数 从表中选择ID 其中STATUS=通过,STATUS!=失败您可以使用聚合: select id from table where status in ('passed', 'failed') group by id having min(status) = 'passed'; 这使用having子句的“passed”和“f

我正在尝试选择其他记录中具有“已通过”但没有“失败”状态的所有ID。显然,ID不是这个表的主键。但这不起作用,它只查看给定的记录,而不是所有的记录,我想我需要某种聚合函数

从表中选择ID
其中STATUS=通过,STATUS!=失败

您可以使用聚合:

select id
from table
where status in ('passed', 'failed')
group by id
having min(status) = 'passed';

这使用having子句的“passed”和“failed”这一事实。如果最小值已通过,则所有值均已通过。

请尝试以下操作^

SELECT ID FROM TABLE WHERE STATUS = 'passed'
EXCEPT
SELECT ID FROM TABLE WHERE STATUS = 'failed'

不管字符串是什么,都能工作吗?它将返回having语句的记录,而不管in语句中还有其他字符串?只要存在一条记录,记录中的每个值都在?@John。是的,这个有效。