gpt4 book ai didi

Mysql:其中 ..id != X 不包含 NULL 外键

转载 作者:行者123 更新时间:2023-11-29 23:19:48 24 4
gpt4 key购买 nike

我有这个 Mysql 表:

分配:tasking_id (PK)、company_id (FK)、...其他一些字段...

如果尚未将分配分配给公司,则 FK company_id 可以为 NULL。

现在,我想查询所有不属于 id 2 公司的分配。所以我这样做了:

SELECT * FROM assignment WHERE company_id != 2

令我惊讶的是,结果中没有返回company_id NULL 的分配。我想说 NULL != 2 所以应该返回它。如果我去的话效果很好

(company_id IS NULL OR company_id != 2)

谁能给我解释一下这背后的逻辑吗?和FK约束有关系吗?

最佳答案

逻辑很简单:你不能真正说是否 NULL等于 2,因为你对 NULL 一无所知。引用the doc :

Conceptually, NULL means “a missing unknown value” and it is treated somewhat differently from other values. You cannot use arithmetic comparison operators such as =, <, or <> to test for NULL. [...] Because the result of any arithmetic comparison with NULL is also NULL, you cannot obtain any meaningful results from such comparisons.

您已经在问题中展示了一种可能的解决方法,另一种是使用 <=> (NULL-safe comparison operator):

SELECT * FROM assignment
WHERE NOT(company_id <=> 2)

关于Mysql:其中 ..id != X 不包含 NULL 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27421962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com