我有兩個表: teacher_lm和老師。 這些表格既包含「teacher_email」列查詢獲得記錄在一個表中,但不在另一個
我需要的是獲取teacher_lm中存在的電子郵件,但不包含在teacher中。
我有2種不同的方法來解決這個問題,但我不明白爲什麼其中一個沒有給出任何結果,另一個返回很多行。
第一位:842行
SELECT DISTINCT lm.teacher_email
FROM teacher_lm as lm
WHERE NOT EXISTS (SELECT * FROM teacher as lt
WHERE lt.teacher_email = lm.teacher_email
)
第二個:沒有結果
SELECT DISTINCT lm.teacher_email FROM
teacher_lm AS lm
WHERE lm.teacher_email NOT IN
(SELECT lt.teacher_email FROM
teacher AS lt)
你能告訴我什麼,我做錯了什麼,什麼是做到這一點的最好方法是什麼?
謝謝。
謝謝!你是對的:)現在它給了相同數量的結果。 IN子查詢需要花費數年的時間才能完成,因此我會選擇那個。再次感謝:) – Vika 2012-08-15 17:57:30
@Vika。 。 。以防萬一您使用另一個數據庫,EXISTS比IN更好的特性是針對mysql的。可能在其他數據庫中也可能不是這樣,但其他數據庫引擎可以優化IN並且不會更好。 – 2012-08-15 18:55:38