2010-11-26 59 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