SQL Server Select Distinct子句

在本教學中,將學習如何使用SQL Server SELECT DISTINCT子句檢索指定列列表中的唯一不同值。

SELECT DISTINCT子句簡介

有時,可能希望僅在表的指定列中獲取不同的值。那麼請使用SELECT DISTINCT子句,如下所示:

SELECT DISTINCT
    column_name
FROM
    table_name;

查詢僅返回指定列中的不同值。 換句話說,它從結果集中刪除列中的重複值。
如果使用多列,語法如下所示:

SELECT DISTINCT
 column_name1,
 column_name2 ,
 ...
FROM
 table_name;

該查詢使用SELECT列表中所有指定列中的值組合來評估唯一性。

如果將DISTINCT子句應用於具有NULL值的列,則DISTINCT子句將僅保留一個NULL並消除其他的NULL值。 換句話說,DISTINCT子句將所有NULL值視為相同的值。

SQL Server SELECT DISTINCT示例

為了方便演示,將使用示例資料庫中的customers表。表的結構如下所示:

A. DISTINCT一個字段的示例

以下語句返回customers表中所有客戶所在的所有城市:

SELECT
    city
FROM
    sales.customers
ORDER BY
    city;

執行上面查詢語句,得到以下結果 -

從查詢輸出中可以清楚地看到,城市是重複的。
要獲取不同的城市唯一值,請按如下方式添加DISTINCT關鍵字:

SELECT DISTINCT
    city
FROM
    sales.customers
ORDER BY
    city;

執行上面查詢語句,得到以下結果:

現在,查詢為每組重複項返回一個不同的值。也就是說它從結果集中刪除了所有重複的城市。

B. DISTINCT多列示例

以下語句查找所有客戶的不同城市和州。

SELECT DISTINCT
    city,
    state
FROM
    sales.customers

執行以下查詢語句,得到以下結果 -

在此示例中,語句使用citystate列中的值組合來評估重複項。

C. DISTINCT帶有null值示例

以下示例查找客戶的不同(唯一)電話號碼:

SELECT DISTINCT
    phone
FROM
    sales.customers
ORDER BY
    phone;

執行上面查詢語句,得到以下結果:

在此示例中,使用DISTINCT子句在phone列上,結果中刪除其他NULL僅保留一個NULL值。

在本教學中,學習了如何使用SQL Server SELECT DISTINCT子句檢索指定列列表中的不同值。


上一篇: SQL Server數據查詢 下一篇: SQL Server連接表