SELECT * WHERE NOT EXISTS:查找丢失的记录
SQL 查询“SELECT * from jobs WHERE NOT EXISTS (SELECT name FROM eotm_dyn) ” 的目的是从“employees”表中检索其姓名未出现在“employees”表中的所有行。 “eotm_dyn”表。但是,此查询不完整,不会返回任何结果。
要完成查询,需要在公共字段(通常是唯一标识符字段)上连接两个表。假设这些表在“employeeID”字段上连接,则更正后的查询将变为:
SELECT * FROM employees e WHERE NOT EXISTS ( SELECT null FROM eotm_dyn d WHERE d.employeeID = e.id )
“NOT EXISTS”子查询检查“eotm_dyn”表中是否存在“employeeID”所在的任何行匹配“employees”表中当前行的“id”。如果不存在这样的行,外部查询将返回“employees”表中的整行。此方法可确保仅选择“eotm_dyn”表中没有条目的员工。
或者,可以使用 LEFT JOIN 编写查询,并使用后续的 NULL 值过滤器:
SELECT * FROM employees e LEFT JOIN eotm_dyn d ON e.id = d.employeeID WHERE d.name IS NULL
但是,这种方法可能比使用 NOT EXISTS 子查询效率低,特别是对于大型数据库。
以上是如何使用SQL的'NOT EXISTS”高效查找丢失记录?的详细内容。更多信息请关注PHP中文网其他相关文章!