在 SQL 中,DISTINCT
關鍵字用于返回唯一不同的值。當使用 DISTINCT
與 SELECT
語句結合時,它會從指定的列中篩選出不同的值。關于 NULL
值的處理,SQL 標準規定,DISTINCT
關鍵字在比較時會將 NULL
值視為相等。這意味著,如果兩行中的某列都為 NULL
,那么這兩行會被視為相同的行,并且只會在結果集中返回一行。
以下是一個簡單的示例,說明了 DISTINCT
如何處理 NULL
值:
CREATE TABLE example (
id INT,
name VARCHAR(255),
value INT
);
INSERT INTO example (id, name, value) VALUES (1, 'A', 10);
INSERT INTO example (id, name, value) VALUES (2, 'B', 20);
INSERT INTO example (id, name, value) VALUES (3, 'C', NULL);
INSERT INTO example (id, name, value) VALUES (4, 'A', NULL);
SELECT DISTINCT name, value
FROM example;
在這個示例中,盡管有兩行的 name
列都是 ‘A’,但由于它們的 value
列分別是 10 和 NULL
,根據 SQL 的 DISTINCT
規則,這兩行被視為不同的行。因此,查詢結果將包含兩行:
name | value
-----+-------
A | 10
B | 20
C | NULL
需要注意的是,不同的數據庫系統(如 MySQL、PostgreSQL、SQL Server 等)可能在處理 NULL
值時略有差異,但大多數系統都會遵循 SQL 標準的規定。因此,在實際使用中,建議查閱特定數據庫系統的文檔以了解其具體行為。