仅在*all*值不符合特定条件的情况下选择SQL中的行

max*_*axp 3 sql t-sql group-by

在MS SQL中给出一个非常简单的表,如下所示:

User ID | Status
----------------
1         False
2         True
2         False
3         False
3         False
Run Code Online (Sandbox Code Playgroud)

我无法绕过如何只选择没有Status分配给任何行的用户True.

结果将返回用户ID 1和3.

我觉得它需要的不仅仅是一个直接的WHERE选择器,并且一直在试验GROUP BY和COUNT而没有成功.

Tar*_*ryn 7

您可以使用GROUP BYwith HAVING子句来获取结果.在您HAVINGCASE文档中,您可以使用带有聚合的表达式来过滤掉具有以下内容的行Status = 'True':

select [user id]
from table1
group by [user id]
having sum(case when status = 'true' then 1 else 0 end) < 1;
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo