CREATE TEMP TABLE wirednull (
id bigint NOT NULL,
value bigint,
CONSTRAINT wirednull_pkey PRIMARY KEY (id)
);
INSERT INTO wirednull (id,value) VALUES (1,null);
INSERT INTO wirednull (id,value) VALUES (2,null);
SELECT value FROM wirednull GROUP BY value;
返回一行,但我希望自
以来有两行SELECT *
FROM wirednull a
LEFT JOIN wirednull b
ON (a.value = b.value)
找不到任何连接,因为在postgres中为null!= null
答案 0 :(得分:2)
由于SQL:2003将所有Null标记定义为彼此不相等,因此需要特殊定义才能在执行某些操作时将Null组合在一起。 SQL定义"任何两个彼此相等的值,或任何两个Nulls"," not distinct"。[20]这种不明确的定义允许SQL在使用GROUP BY子句(以及执行分组的其他关键字)时对Null进行分组和排序。
这不是问题:
<击>
由于null = null
或something = null
返回unknown
而非true/false
所以:
ON (a.value = b.value)
不匹配。
击><击> 撞击>