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