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

标签 sql oracle exists anti-join

我的表设置如下:

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

我该怎么做呢?

最佳答案

通常,如果您想要其他表中不存在的行,则将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

这称为反联接。

关于sql - 检查另一个表中是否不存在某项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9366021/

相关文章:

sql - INNER JOIN where **every** row must match the WHERE clause?

sql - 谷歌数据工作室(postgres)的日期格式问题

c# - 如何在 Npgsql 中为查询提供表名作为命令参数?

mysql - 返回大量结果的组合 SQL 查询

sql - 在 Oracle 中用逗号格式化一个冗长的数字

mysql - 在存在的地方插入

sql - postgreSQL中的@@Fetch_status

.net - 您最喜欢哪些适用于 .NET 和 Oracle 的 ORM 框架?

sql - ORA-01861: 文字与格式字符串不匹配

MySQL 'if exists' 错误