Tôi hiểu rằng chuẩn SQL cho phép nhiều giá trị NULL trong một cột là một phần của ràng buộc UNIQUE.Trong PostgreSQL (và có thể các công cụ khác), tại sao câu lệnh UNION xem xét các giá trị NULL giống nhau, trong khi ràng buộc UNIQUE thì không?
Điều tôi không hiểu là tại sao cấu trúc UNION (ít nhất là trong PostgreSQL,) xử lý các giá trị NULL như nhau. Ví dụ:
$ 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)