表有
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
例如,如果User的值为284,那么我希望结果集不包含他 我不知道如何检查User的所有行以查看是否存在284值,然后在结果集中不显示该用户(如果存在)。结果集应该是不同的。
最终结果集应为
User
greg
sally
答案 0 :(得分: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
)
这样做是为了抓住users
表中没有284
表中值为users
的行的所有用户。您也可以exists
作为对话(仅查找284
值的用户)。
此外,使用distinct
上的select
来限制用户返回其唯一值。
答案 1 :(得分:5)
Select distinct User from table
where User not in ( Select User from table
where value =284)
答案 2 :(得分:0)
另一种选择是自我加入:
SELECT DISTINCT u1.[User]
FROM users u1
LEFT OUTER JOIN users u2 ON u2.[User] = u1.[User] AND u2.Value = 284
WHERE u2.[User] IS NULL
答案 3 :(得分:0)
您可以按用户分组,还可以计算有多少用户具有值!= 284
这是SQL
Select `User`
,count(*)- SUM(CASE WHEN `Value` != 284 THEN 1 ELSE 0 END) 284Val
from table
group by `User`
having 284Val = 0;