在 SQL Server 中,DISTINCT 关键字 用于从查询结果中删除重复的行。它确保查询结果中的每一行都是唯一的。DISTINCT 通常与 SELECT 语句一起使用,可以应用于一个或多个列。
基本语法
当你想从单个列中删除重复值时,可以这样使用 DISTINCT:
sql复制代码
SELECT DISTINCT column_name |
|
FROM table_name; |
如果你想从多个列的组合中删除重复行,可以这样做:
sql复制代码
SELECT DISTINCT column1, column2, ... |
|
FROM table_name; |
示例
假设你有一个名为 Students 的表,其中有一个 Name 列,并且这个列中有一些重复的 名字。如果你想获取所有不重复的学生名字,你可以这样写:
sql复制代码
SELECT DISTINCT Name |
|
FROM Students; |
如果 Students 表还有一个 Age 列,并且你想获取所有不重复的名字和年龄的组合,你可以这样写:
sql复制代码
SELECT DISTINCT Name, Age |
|
FROM Students; |
注意事项
性能考虑:对于包含大量数据的表,使用 DISTINCT 可能会降低查询性能,因为它需要对数据进行额外的处理以消除重复项。在设计数据库和查询时,应该尽量避免产生重复数据的情况。
与聚合函数的区别:DISTINCT 与聚合函数(如 COUNT, SUM, AVG 等)不同。聚合函数对一组值执行计算,并返回单个值,而 DISTINCT 用于返回不重复的行或值。
NULL 值处理:在 SQL 中,NULL 值被视为唯一的,因此即使两个行在所有其他列上都是相同的,但如果其中一列包含一个 NULL 而另一行包含另一个值或另一个 NULL,这两行仍然被视为不同的。但是,如果两行在 DISTINCT 所考虑的列上都有相同的 NULL 值,它们只会被计算一次。
结合其他子句使用:DISTINCT 可以与 WHERE、ORDER BY、GROUP BY 等其他 SQL 子句结合使用,以执行更复杂的查询和数据操作。