在 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 标准的规定。因此,在实际使用中,建议查阅特定数据库系统的文档以了解其具体行为。