2010-11-26 54 views
1

我現在有一個查詢FROM表1 WHERE {對錶1的過濾器}和IDMySQL的加入和內選擇

SELECT ID NOT IN(SELECT table1ID FROM表2 WHERE條件= 0)

表1與table2有一對多的關係,我正在尋找條件爲0的table2中沒有條目的所有ID。

有沒有辦法重寫這個查詢沒有內部選擇?一段時間以來我一直在撓頭,任何指針都會受到歡迎。

回答

1

你可以嘗試像

SELECT id 
FROM table1 t1 LEFT JOIN 
     table2 t2 ON t1.ID = t2.table1ID 
        AND t2.Condition = 0 
WHERE {filters on table1} 
AND  t2.table1ID IS NULL 

還是一樣好,將

SELECT id 
FROM table1 t1 
WHERE {filters on table1} 
AND  NOT EXISTS (
         SELECT 1 
         FROM table2 t2 
         WHERE t1.ID = t2.table1ID 
         ADN  t2.condition = 0 
        ) 
+0

那不是第一次查詢必須是一個OUTER JOIN? – 2010-11-26 08:22:44