SQL Server DISTINCT 语句通过从 SELECT 语句中指定的列中删除重复项来检索唯一记录。SELECT DISTINCT 语句的语法是
SELECT DISTINCT [Column Names] FROM Source WHERE Conditions -- This is Optional
- 列:它允许我们从表中选择列的数量。可以是一个或多个。
- 来源:数据库中的一个或多个表。JOINS 用于在 SQL Server 中连接多个表。
我们将使用以下数据进行解释。

SQL Select Distinct 单列
在此示例中,我们选择 Education 列中存在的唯一记录。
SELECT DISTINCT [Education] FROM [Employees]

多列
当我们在多列上使用它时,以下查询返回多列的唯一组合,而不是唯一的单个记录。在此示例中,我们选择 Education 列和 Yearly Income 列中记录的唯一组合。
SELECT DISTINCT [Education] ,[YearlyIncome] FROM [Employees]

尽管我们在 SELECT 语句中使用了关键字,但它仍返回重复项,因为
- 学士和 70000 是一个独特组合
- 学士和 80000 是一个独特组合
- 学士和 90000 是一个独特组合
SQL Select Distinct Where 子句
在这里,我们将其与 WHERE 子句一起使用。以下语句将返回年收入大于 50000 的唯一 Education 值
SELECT DISTINCT [Education] ,[YearlyIncome] FROM [Employees] WHERE YearlyIncome > 50000

DISTINCT 将 NULL 记录视为有效的 DISTINCT 记录。因此,请使用任何非空函数(NOT NULL)来删除 NULL。
SQL Select Distinct Group By 示例
它还允许我们与 Group By 子句一起使用聚合函数。以下唯一查询按 Education 对员工进行分组。接下来,它会找出每个 Education 组的唯一年收入总和。
SELECT [Education] ,SUM(DISTINCT YearlyIncome) AS [Total Income] FROM [Employees] GROUP BY [Education]

让我们从上面的查询中删除关键字。
SELECT [Education] ,SUM(YearlyIncome) AS [Total Income] FROM [Employees] GROUP BY [Education]
查看年收入的差异,因为它正在查找所有记录的总和(而不是独特的记录)。

DISTINCT Count 示例
此 Select Distinct Count 是最常见的问题之一。此示例计数并返回每个 Education 组中独特的员工 ID。
SELECT [Education] ,COUNT(DISTINCT EmpID) AS [Total Employees] FROM [Employees] GROUP BY [Education]

在这里,我们使用了带此关键字和不带此关键字的 Count 函数。这个独特的示例展示了结果集之间的差异。
SELECT [Education] ,COUNT(DISTINCT DeptID) AS [Total Dept Ids] ,COUNT(DeptID) AS [Total Ids] FROM [Employees] GROUP BY [Education]

Null 示例
SELECT DISTINCT 语句将 NULL 视为一个独特的关键字。
SELECT DISTINCT DeptID FROM [Employees]

评论已关闭。