sql - 左连接 - 使用 where (null <> 'p') 时的行为

标签 sql postgresql left-join

在此选择中显示了 4 条记录,其中 3 条为空值,表示没有相关性,只有一条有相关性。

enter image description here

结果:

enter image description here

当我在 WHERE pc.contype <> 'p' 中添加约束时, 仅所有记录而不仅仅是 'p'。

enter image description here

结果:

enter image description here

我无法理解正在发生的事情,这是我放弃的一些规则吗?

最佳答案

NULL 不等于(或不等于)任何东西,包括 NULL 本身。忽略您正在使用 LEFT JOIN 并假设 contype可以为空:条件 WHERE contype <> 'p'不会仅仅因为 NULL <> 'p' 匹配 NULL是未知的,不是真的!

您将编写以下代码以获取右表中没有匹配项的行:

WHERE contype <> 'p' OR contype IS NULL

关于sql - 左连接 - 使用 where (null <> 'p') 时的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56298532/

相关文章:

sql - 如何从一个表和一个子表中进行选择

sql - T-SQL : Additional predicates on JOINs vs. WHERE 子句

c# - TSQL + C# : Dynamically changing the Database in use

python - 从 Point Django 获取坐标

MySQL 在 FIND_IN_SET() 中排除优于包含

mysql - 按日期范围连接两个表

java - SQL - 如何获取 SUM 的百分比

sql - PostgreSQL 简单触发器问题

java - 如何将 Embedded PostgreSQL Server Java 组件用作单独的服务?

mysql - 优化 Sql Query 删除 SELECT 子句并使用 JOIN