我有一个表看起来像这样:查询所有id,而不是具有特定值
user_id group_id
1 1
1 2
1 3
1 4
2 1
2 2
3 3
3 4
4 3
4 4
我怎样才能查询所有的user_id其不是在组1在这个例子中,结果是图3和4。
我有一个表看起来像这样:查询所有id,而不是具有特定值
user_id group_id
1 1
1 2
1 3
1 4
2 1
2 2
3 3
3 4
4 3
4 4
我怎样才能查询所有的user_id其不是在组1在这个例子中,结果是图3和4。
下面是使用Group BY
和Having
条款
select user_id
from yourtable
group by user_id
having count(case when group_id = 1 then 1 end) = 0
使用NOT EXISTS操作和dependend子查询
的一种方式3210SELECT DISTINCT user_id
FROM Table t
WHERE NOT EXISTS (
Select * FROM Table t1
WHERE t1.user_id = t.user_id
AND t1.group_id = 1
)
您还可以使用NOT IN:
SELECT DISTINCT user_id
FROM Table t
WHERE user_id NOT IN (
SELECT user_id FROM table
WHERE group_id = 1
)
这里是你如何用左手做加盟:
select distinct user_id
from a_table_you_did_not_name base
left join a_table_you_did_not_name g1 on base.user_id = g1.user_id and g1.group_id = 1
where g1.user_id is null
在这里,你做一个左连接,然后“寻找”没有加入的东西。由于连接需要group_id = 1的存在,因此会提供所需的结果。
这种方式很不错 –