2014-03-01 20 views
0

我有2個表t1和t2和一箇中間表t2_has_t1鏈接這兩個表(多對多)。選擇所有不存在的中間表應該嵌套選擇

我想從t1中選擇所有未鏈接到t2(通過t2_has_t1)。我可以用嵌套選擇,但我想知道這是否可以用更有效的方式完成

這個小提琴顯示了我如何使用嵌套選擇。

http://sqlfiddle.com/#!2/fb9d81/2/0 (小提琴更新)

+0

SELECT * FROM T1 LEFT JOIN t2_has_t1 ON t1.id_t1 = t2_has_t1.fk_t1 WHERE t2_has_t1.fk_t2 IS NULL; 修復duelisy的回答它的工作聲明。 – ptheofan

回答

1

如果你想要做一個單一的查詢,你可以使用一個連接,這樣的事情:

SELECT * FROM t1 
LEFT JOIN t2_has_t1 
ON t1.id_t1 = t2_has_t1.fk_t2 
WHERE t2_has_t1.fk_t2 IS NULL 
+0

該死的,你完全正確!有直覺感覺這很簡單!它現在還是凌晨在這裏:)。多謝,夥計! – ptheofan

+0

該死的兩次,不起作用!只是注意到,你已經在中間表中添加了另一對值,並且不起作用。更新小提琴(http://sqlfiddle.com/#!2/fb9d81/2/0) – ptheofan

+0

隊友,請修復您的解決方案中的關係鏈接(上),否則它幾乎是正確的;) – ptheofan