7.5 SQL Server查询去重

2022/8/28 2:22:48

本文主要是介绍7.5 SQL Server查询去重,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

SQL Server SELECT DISTINCT

目录
  • SQL Server SELECT DISTINCT
    • SELECT DISTINCT简介
    • SELECT DISTINCT示例
      • A) DISTINCT单列
      • B) DISTINCT多列
      • C) DISTINCT NULL值
    • DISTINCT与GROUP BY

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

在本例中,语句使用citystate列中的值组合来计算重复项。即这两列值同时都相同才算重复项

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;

DISTINCTGROUP BY子句都通过删除重复项来减少结果集中返回的行数。

但是,如果要对一列或多列应用聚合函数,则应使用GROUP BY子句。



这篇关于7.5 SQL Server查询去重的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程