一尘不染

选择*不存在

mysql

我认为我要沿着这条路走正确的路…请忍受,因为我的SQL并不是最出色的

我试图查询数据库以从一个表中选择所有单元格中某些单元格不存在的所有内容。那没有多大意义,但我希望这段代码会

SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)

因此,基本上我有一张桌子,上面列出了员工及其详细信息。然后是另一个表,其中包含一些其他详细信息,包括其名称。在eotm_dyn表中没有名称的地方,这意味着它们没有条目,我想确切地知道它们是谁,或者换句话说,确切地知道缺少什么。

上面的查询什么也没有返回,但是我知道缺少20个名字,所以我显然没有正确。

有人可以帮忙吗?


阅读 337

收藏
2020-05-17

共1个答案

一尘不染

您没有在查询中加入表。

除非原始查询没有任何记录,否则原始查询将始终不返回任何内容eotm_dyn,在这种情况下它将返回所有内容。

假设这些表应在上联接employeeID,请使用以下命令:

SELECT  *
FROM    employees e
WHERE   NOT EXISTS
        (
        SELECT  null 
        FROM    eotm_dyn d
        WHERE   d.employeeID = e.id
        )

您可以使用LEFT JOIN关键字将这些表连接起来并过滤掉的关键字NULL,但这可能会比使用效率低NOT EXISTS

2020-05-17