如果存在多行,则排除包含值的列

arc*_*ank 2 sql t-sql sql-server

表有

User   Value
john   284
john   200
john   5
sally  245
sally  180
sally  10
bill   90
bill   1000
bill   284
greg   10
greg   90
greg   2000
Run Code Online (Sandbox Code Playgroud)

例如,如果User的值为284,那么我希望结果集不包含他我不知道如何检查User的所有行以查看是否存在284值,然后在结果集中不显示该用户在那儿.结果集应该是不同的.

最终结果集应该是

User
greg
sally
Run Code Online (Sandbox Code Playgroud)

Eri*_*ric 8

用途not exists:

select distinct
    user
from
    users u
where
    not exists (
       select
           1
       from
           users u2
       where
           u2.user = u.user
           and u2.value = 284
    )
Run Code Online (Sandbox Code Playgroud)

这样做是它抓住一切从用户的users表,他们没有与该值的行284users表.您也可以exists作为一个converse(仅查找具有284值的用户).

此外,使用distincton select来限制返回其唯一值的用户.


pra*_*een 5

    Select distinct User from table
    where User not in ( Select User from table
    where value =284)
Run Code Online (Sandbox Code Playgroud)