我有一個表看起來像這樣:查詢所有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的存在,因此會提供所需的結果。
這種方式很不錯 –