考虑以下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((中。
例如,如果我将NULL替换为0,它会返回这两个结果。
为什么设计成这样?我错过了什么?
谢谢!
将null视为丢失的数据。例如,如果我们有一列";出生日期";。
例如,考虑一个数据库,其中有三个人出生在1975年和1990年,而我们不知道第三个人的出生日期。我们知道第三人确实出生了,但我们还不知道它的出生日期。
现在,如果一个查询搜索的人";不是1990年出生的";?那只会返回第一人称。
第二个人出生于1990年,因此显然无法入选。
对于第三个人,我们不知道她的出生日期,所以我们不能说任何关于她的事情,查询也不会选择她。这有道理吗?