在 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 子句结合使用,以执行更复杂的查询和数据操作。
总之,DISTINCT
是一个强大的工具,用于确保查询结果中的唯一性。然而,在使用它时应该考虑到性能因素,并尽量避免在大数据集上使用它,除非真的需要消除重复项。