wut*_*aer 5 postgresql null group-by
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;
Run Code Online (Sandbox Code Playgroud)
返回一行,但我希望有两行,因为
SELECT *
FROM wirednull a
LEFT JOIN wirednull b
ON (a.value = b.value)
Run Code Online (Sandbox Code Playgroud)
没有找到任何连接,因为在 postgres 中 null!=null
根据SQL 维基百科:
由于 SQL:2003 将所有 Null 标记定义为彼此不相等,因此需要一种特殊的定义,以便在执行某些操作时将 Null 分组在一起。SQL 将“任何两个彼此相等的值或任何两个 Null”定义为“不不同”。[20] 当使用 GROUP BY 子句(以及执行分组的其他关键字)时,这种 not unique 的定义允许 SQL 对 Null 进行分组和排序。
这不是问题:
因为null = null或者something = null返回unknown不true/false
所以:
ON (a.value = b.value)
Run Code Online (Sandbox Code Playgroud)
不匹配。
| 归档时间: |
|
| 查看次数: |
3244 次 |
| 最近记录: |