SQL SELECT DISTINCT 语句

SQL Server DISTINCT 语句通过从 SELECT 语句中指定的列中删除重复项来检索唯一记录。SELECT DISTINCT 语句的语法是

SELECT DISTINCT [Column Names]
FROM Source
WHERE Conditions -- This is Optional
  • 列:它允许我们从表中选择列的数量。可以是一个或多个。
  • 来源:数据库中的一个或多个表。JOINS 用于在 SQL Server 中连接多个表。

我们将使用以下数据进行解释。

Employee Table

SQL Select Distinct 单列

在此示例中,我们选择 Education 列中存在的唯一记录。

SELECT DISTINCT [Education]
  FROM [Employees]

多列

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

SELECT DISTINCT [Education]
 ,[YearlyIncome]
  FROM [Employees]
Multiple Columns 1

尽管我们在 SELECT 语句中使用了关键字,但它仍返回重复项,因为

  • 学士和 70000 是一个独特组合
  • 学士和 80000 是一个独特组合
  • 学士和 90000 是一个独特组合

SQL Select Distinct Where 子句

在这里,我们将其与 WHERE 子句一起使用。以下语句将返回年收入大于 50000 的唯一 Education 值

SELECT DISTINCT [Education]
 ,[YearlyIncome]
  FROM [Employees]
  WHERE YearlyIncome > 50000
SELECT DISTINCT Where Clause 1

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 DISTINCT Group By 1

让我们从上面的查询中删除关键字。

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 Records in a Table 1

在这里,我们使用了带此关键字和不带此关键字的 Count 函数。这个独特的示例展示了结果集之间的差异。

SELECT [Education]
 ,COUNT(DISTINCT DeptID) AS [Total Dept Ids]
 ,COUNT(DeptID) AS [Total Ids]
  FROM [Employees]
  GROUP BY [Education]
SELECT DISTINCT Count 2

Null 示例

SELECT DISTINCT 语句将 NULL 视为一个独特的关键字。

SELECT DISTINCT DeptID
  FROM [Employees]

评论已关闭。