我了解 SQL 标准允许在作为 UNIQUE 约束一部分的列中使用多个 NULL 值。
我不明白为什么 UNION 构造(至少在 PostgreSQL 中)将 NULL 值视为相同。例如:
$ select * from tmp_a;
a | b
---+---
a | b
a |
|
(3 rows)
$ select * from tmp_b;
a | b
---+---
a | c
a |
|
(3 rows)
$ select a, b from tmp_a union select a, b from tmp_b order by 1, 2;
a | b
---+---
a | b
a | c
a |
|
(4 rows)