请考虑以下SQL片段:
CREATE TABLE product
(
id integer,
stock_quantity integer
);
INSERT INTO product (id, stock_quantity) VALUES (1, NULL);
INSERT INTO product (id, stock_quantity) VALUES (2, NULL);
SELECT *
FROM product
WHERE (id, stock_quantity) NOT IN ((1, 2), (2, 9));我不明白它为什么不选择任何东西。我在用Postgres。
我希望返回这两行,因为我希望(1,NULL)和(2,NULL)不在((1,2),(2,9))。
例如,如果我用0替换NULL,它确实返回两个结果。
为什么它被设计成这样?我遗漏了什么?
谢谢!
发布于 2022-11-03 18:56:49
将null视为缺少数据。例如,如果我们有一个列“出生日期”。
例如,假设一个数据库中有三个出生于1975年、1990年的人,而我们不知道第三个人的出生日期。我们知道第三个人确实出生了,但我们还不知道它的出生日期。
现在,如果一个查询搜索的人“不是1990年出生的”呢?只会返回第一个人。
第二个人出生于1990年,因此显然不能选择。
对于第三个人,我们不知道出生日期,所以我们不能说关于她的任何信息,而且查询也没有选择她。说得通吗?
https://stackoverflow.com/questions/74307892
复制相似问题