admin

检查另一个表中是否不存在某项

sql

我的表设置如下:

table name: process
fields: name, id_string

table name: value_seach
fields: id_string, value

我想构造一个select语句,该语句将显示在value_search中没有条目的所有进程名称(带有其各自的id_string)。

进程表中的id_string可以为 null
,并且仍然具有名称,但是如果可能的话,必须将其排除。value_search中的id_string永远不能为 null

我该怎么做呢?


阅读 228

收藏
2021-05-10

共1个答案

admin

通常,如果您想要其他表中不存在的行,则将LEFT JOIN另一个表,并将WHERE … IS
NULL插入第二个表的列。您还提到过,您不希望process.id_string为NULL的行。

SELECT p.name, p.id_string
FROM
    process p
    LEFT JOIN value_search v
        ON v.id_string = p.id_string
WHERE
    v.id_string IS NULL
    AND p.id_string IS NOT NULL

这称为反联接。

2021-05-10