2011-12-13 61 views
0

我想顯示一個不存在於另一個表中的項目列表。例如:如何正確使用MySQL的NOT EXISTS?

usertable: 

uid 
name 
email 

othertable: 
uid 

我試圖篩選出已經存在於其他表,所以當我顯示用戶表,它只會顯示不在othertable的用戶。

+0

可能重複的[MySQL「NOT IN」查詢](http://stackoverflow.com/questions/1519272/mysql-not-in-query) – CanSpice 2011-12-13 23:18:48

+1

這是http://stackoverflow.com/的確切副本問題/ 915643/select-where-exist – 2011-12-13 23:23:02

回答

3

不存在於mysql中是完全不同於你想要做的事情。 更新:這是不正確的!(謝謝指出)

我知道你想選擇所有使用的記錄,但不能在其他的,對吧?

SELECT * FROM usertable WHERE uid NOT in (SELECT uid FROM othertable) 

UPDATE在要檢查所有的字段行中,不僅ID,您可以使用類似的情況:

SELECT * FROM usertable 
WHERE field1, field2, fieldN NOT IN 
(SELECT field1, field2, fieldN FROM othertable) 
2

這將是一個左簡單的JOIN:

SELECT u.* 
FROM usertable u 
LEFT JOIN othertable o USING (uid) 
WHERE o.uid IS NULL 

如果你想擁有NOT EXISTS

SELECT * 
FROM usertable u 
WHERE NOT EXISTS (
    SELECT * 
    FROM othertable o 
    WHERE o.uid = u.uid 
    )