7.5 SQL Server查询去重
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
的列,DISTINCE
子句只保留一个NULL
并删除其他为NULL
的值。换句话说,DISTINCT
子句将所有空NULL
视为相同的值。
SELECT DISTINCT示例
用于演示,假设数据库中有如下客户(customers)表:
A) DISTINCT单列
以下语句返回customers表中所有客户的所有城市:
SELECT city FROM sales.customers ORDER BY city;
从输出中可以清楚地看到,城市是重复的。
要获得不同的城市,使用DISTINCT
关键字:
SELECT DISTINCT city FROM sales.customers ORDER BY city;
city
列去重成功
B) DISTINCT多列
此语句返回所有客户的所有城市和州:
SELECT city, state FROM sales.customers ORDER BY city, state;
以下语句查找所有客户的不同城市和州.
SELECT DISTINCT city, state FROM sales.customers
在本例中,语句使用city
和state
列中的值组合来计算重复项。即这两列值同时都相同才算重复项
C) DISTINCT NULL值
以下示例查找客户的不同电话号码:
SELECT DISTINCT phone FROM sales.customers ORDER BY phone;
在本例中,DISTINCT
子句在phone
列中仅保留一个NULL
,并删除了其他NULL
。
DISTINCT与GROUP BY
下面的语句使用GROUP BY
子句从sales.customers
表中返回不同的城市以及州和邮政编码:
SELECT city, state, zip_code FROM sales.customers GROUP BY city, state, zip_code ORDER BY city, state, zip_code
下图显示了部分输出:
它相当于使用DISTINCT运算符的以下查询:
SELECT DISTINCT city, state, zip_code FROM sales.customers;
DISTINCT
和GROUP BY
子句都通过删除重复项来减少结果集中返回的行数。
但是,如果要对一列或多列应用聚合函数,则应使用GROUP BY
子句。
分类:
SQL Server
标签:
SQL Server
, 数据库
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek “源神”启动!「GitHub 热点速览」
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器