2011-01-19 145 views
0

如何選擇表T1其中查詢需要幫助

T1.itemID = T2.itemID 

和T2沒有找到相應的記錄結果,即發現只有在T1?

回答

5

像這樣:

SELECT … 
    FROM t1 LEFT JOIN t2 ON (t1.itemid = t2.itemid) 
    WHERE t2.itemid IS NULL 

更明顯查詢使用NOT EXISTS運行速度較慢舊版本的MySQL。感謝@OMG小馬benchmarks in a newer (unspecified) version

這裏是NOT EXISTS版本:

SELECT … 
    FROM t1 
    WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE t2.itemid = t1.itemid) 

(解釋,答覆意見:LEFT JOIN之處在於INNER JOIN不同,如果在右表中沒有行,一行的結果還是返回,但所有列= NULL)

+0

如果T2中沒有匹配的記錄,它仍然可以工作嗎? – santa 2011-01-19 16:49:07

+0

如果t1.itemid = t2.itemid和t2.itemid IS NULL那麼t1.itemid也不會爲null?我很困惑:) – Learning 2011-01-19 16:51:48

1
select * from T1 where ItemID not in (select ItemId from T2)