MySQL Join和内部选择

时间:2010-11-26 08:11:21

标签: mysql select join refactoring

我目前有查询

  

SELECT id FROM table1 WHERE {filter on table1} AND id NOT IN(SELECT table1ID FROM table2 WHERE condition = 0)

Table1与table2有1 - 多关系,我正在寻找table2中没有条目且条件= 0的所有ID。

有没有办法在没有内部选择的情况下重写这个查询?我一直在摸不着头脑,现在欢迎任何指示。

1 个答案:

答案 0 :(得分: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
                    )