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