MySQL连接和内部选择
我现在有一个问题 从表1中选择id,其中{filters on table1},从表2中选择id,其中条件为0 Table1与table2有一个1-Many关系,我正在查找所有在table2中没有条件为0的条目的IDMySQL连接和内部选择,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
有没有办法在不使用内部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
)
第一个查询不是必须是外部联接吗?不,左联接应该可以。您正在查找缺少的项,因此该项为空,它应该只返回一行,因为某些项只能缺少一次。谢谢,伙计,这太完美了。我有一些类似于第一个的东西,只是不能完全正确。非常感谢。第一个查询不是必须是外部联接吗?不,左联接应该可以。您正在查找缺少的项,因此该项为空,它应该只返回一行,因为某些项只能缺少一次。谢谢,伙计,这太完美了。我有一些类似于第一个的东西,只是不能完全正确。非常感谢。