1
A
回答
3
@ jarlh的回答可能是最快的,如果你有兩個表;
- 一個與用戶
- 一個與你的事實
select "users"."user_id"
from "users"
where not exists (select 1 from tablename t2
where t2."user_id" = "users"."user_id"
and t2."key" = 2)
這就是結構我會建議過,有兩個表。
對於你的情況,如果你只有一個表,下面可能是一個更快的選擇;它不需要加入或運行相關的子查詢,而是隻掃描整個表一次。
SELECT
"user"
FROM
tablename
GROUP BY
"user"
HAVING
MAX(CASE WHEN "key" = 2 THEN 1 ELSE 0 END) = 0
1
試試這個;
SELECT "user", "key"
FROM Your_Table AS T1
LEFT OUTER JOIN Your_Table AS T2 ON T1."user" = T2."user" AND T2."key" = 2
WHERE T2."user" IS NULL
2
返回用戶行,只要相同的用戶不具有鍵2.
select user, key
from tablename t1
where not exists (select 1 from tablename t2
where t2.user = t1.user
and t2.key = 2)
注意user
是ANSI SQL的保留字,所以你可能需要到另一行將其劃定爲"user"
。
相關問題
- 1. PostgreSQL的選擇
- 2. PostgreSQL的選擇恆
- 3. 選擇在PostgreSQL的
- 4. 選擇在PostgreSQL
- 5. 選擇PostgreSQL觸發
- 6. PostgreSQL的選擇查詢
- 7. 如何選擇PostgreSQL的
- 8. PostgreSQL的:選擇陣列
- 9. PostgreSQL的選擇查詢maniuplation
- 10. PostgreSQL的:選擇各組
- 11. PostgreSQL中的複雜選擇
- 12. PostgreSQL的選擇和日期
- 13. PostgreSQL選擇值的兩列
- 14. PostgreSQL的選擇查詢(GPS)
- 15. 低速選擇 - 的PostgreSQL
- 16. PostgreSQL的:子選擇內插
- 17. PostgreSQL的時間戳選擇
- 18. PostgreSQL有條件的選擇
- 19. POSTGRESQL - 功能選擇+更新
- 20. Postgresql從哪裏選擇
- 21. Postgresql選擇任何東西
- 22. PostgreSQL過程語言:選擇?
- 23. PostgreSQL選擇到OUT變量
- 24. PostgreSQL選擇INTO函數
- 25. Postgresql,選擇空字段
- 26. 在PostgreSQL Table Select中選擇
- 27. PostgreSQL選擇和聚合
- 28. PostgreSQL選擇結果大小
- 29. 選擇按月PostgreSQL中
- 30. Postgresql插入選擇多行
jarlh的回答不使用兩個表格。它只使用一個表。 –
@a_horse_with_no_name:這是我的觀點,我不同意jarlh的答案是隻有一個表具有退化用戶維度的情況下最快的答案。 – MatBailie
你的第二個查詢最後缺少'= 0'。 –