Sql 在另两个表中没有对应项的表中的行?
当您搜索左表中的行而右表中没有对应行时,上面的代码工作得很好Sql 在另两个表中没有对应项的表中的行?,sql,mysql,Sql,Mysql,当您搜索左表中的行而右表中没有对应行时,上面的代码工作得很好 但是如何从左表中找到行,而在两个右表中没有对应的行呢?如果我理解正确,您希望在左表中找到其他两个表中都不存在的记录吗?最具可读性的是: SELECT left_tbl.* FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id WHERE right_tbl.id IS NULL; 使用左JOIN/IS为空: SELECT a.* FROM LEFT
但是如何从左表中找到行,而在两个右表中没有对应的行呢?如果我理解正确,您希望在
左表中找到其他两个表中都不存在的记录吗?最具可读性的是:
SELECT left_tbl.*
FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id
WHERE right_tbl.id IS NULL;
使用左JOIN/IS为空:
SELECT a.*
FROM LEFT_TBL lt
WHERE NOT EXISTS(SELECT NULL
FROM TABLE_A a
WHERE a.id = lt.id)
AND NOT EXISTS(SELECT NULL
FROM TABLE_B b
WHERE b.id = lt.id)
如果希望左\u TBL
记录不存在于两个表中,请将WHERE
子句中的和更改为或,谢谢。是的,这就是我要找的。我对它进行了测试,两种方法都有效。由于某种原因,当我使用“LEFT_TBL lt…lt.id”时不起作用,但当我使用“LEFT_TBL…LEFT_TBL.id”时,它起作用了。我也尝试过“LEFT_TBL AS lt”,但没有成功。也许是因为我的代码的结构。
SELECT lt.*
FROM LEFT_TBL lt
LEFT JOIN TABLE_A a ON a.id = lt.id
LEFT JOIN TABLE_B b ON b.id = lt.id
WHERE a.id IS NULL
AND b.id IS NULL