MySQL连接和内部选择

MySQL连接和内部选择,mysql,select,join,refactoring,Mysql,Select,Join,Refactoring,我现在有一个问题 从表1中选择id,其中{filters on table1},从表2中选择id,其中条件为0 Table1与table2有一个1-Many关系,我正在查找所有在table2中没有条件为0的条目的ID 有没有办法在不使用内部select的情况下重写此查询?我已经为它挠头好一阵子了,欢迎任何指点。你可以试试类似的东西 SELECT id FROM table1 t1 LEFT JOIN table2 t2 ON t1.ID = t2.table1ID

我现在有一个问题

从表1中选择id,其中{filters on table1},从表2中选择id,其中条件为0

Table1与table2有一个1-Many关系,我正在查找所有在table2中没有条件为0的条目的ID


有没有办法在不使用内部select的情况下重写此查询?我已经为它挠头好一阵子了,欢迎任何指点。

你可以试试类似的东西

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
                    )

你可以试试类似的东西

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
                    )

第一个查询不是必须是外部联接吗?不,左联接应该可以。您正在查找缺少的项,因此该项为空,它应该只返回一行,因为某些项只能缺少一次。谢谢,伙计,这太完美了。我有一些类似于第一个的东西,只是不能完全正确。非常感谢。第一个查询不是必须是外部联接吗?不,左联接应该可以。您正在查找缺少的项,因此该项为空,它应该只返回一行,因为某些项只能缺少一次。谢谢,伙计,这太完美了。我有一些类似于第一个的东西,只是不能完全正确。非常感谢。