2014-09-18 84 views
0

我在MYSQL數據庫中有一個'entries'表。我有另一個表記錄這些條目的活動,並將條目的id作爲外鍵。我想從我的第一個表中選擇不出現在第二個表中的條目。從不在另一個表中的數據庫表中選擇行

我該如何使用SQL來實現這一點?我是否必須遍歷兩個表並將每個條目與其他條目進行比較?有沒有更簡單的方法來做到這一點?

ex。我有一個包含入口數據列和用戶名列的表格。我有另一個表中的條目ID列和用戶ID列。我想從我的第一個表格中選擇所有沒有出現在第二個表格中的給定用戶ID的條目。

提前致謝。我一直在努力嘗試這個實驗。我想我必須以某種方式加入這兩張桌子?

回答

3

有幾種方法可以實現這個,NOT IN,NOT EXISTS,LEFT JOIN/NULL檢查。這裏有一個與NOT EXISTS

SELECT * 
FROM FirstTable T 
WHERE NOT EXISTS (
    SELECT * 
    FROM SecondTable T2 
    WHERE T.Id = T2.Id 
    ) 
+0

無需選擇所有列,使用SELECT 1 FROM ....代替 – Gervs 2014-09-18 19:48:31

+0

Gervs能澄清嗎? – shane 2014-09-18 20:09:46

+1

@ user3667450 - 有一個古老的爭論,當使用'EXISTS'時,可以使用'SELECT *'或'SELECT 1'。大多數現代DBMS將實際上爲這些查詢產生相同的執行計劃。我更喜歡'SELECT *'的可讀性,但它們都工作得很好。所以,如果你願意,你可以寫'......不存在(SELECT 1 ...'。 – sgeddes 2014-09-18 20:12:50

相關問題