首页 > 数据库 >7.5 SQL Server查询去重

7.5 SQL Server查询去重

时间:2022-08-27 18:13:14浏览次数:49  
标签:city customers DISTINCT SQL 子句 Server state 7.5 SELECT

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

在本例中,语句使用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子句。

标签:city,customers,DISTINCT,SQL,子句,Server,state,7.5,SELECT
From: https://www.cnblogs.com/michaelshen/p/16631091.html

相关文章

  • 7.2 SQL Server数据排序
    SQLServerORDERBY目录SQLServerORDERBYSQLServerORDERBY子句简介ORDERBY示例A)按一列升序排序B)按一列降序排序C)按多列对结果集排序D)按多列和不同顺序对结果......
  • MySQL源码分析之SQL函数执行
    1.MySQL中执行一条SQL的总体流程2.SQL函数执行过程1.MySQL中执行一条SQL的总体流程一条包含函数的SQL语句,在mysql中会经过:客户端发送,服务器连接,语法解析,语句执行的......
  • 【MySQL】MySQL8确认哪些参数在使用以及来源
    在MySQL8中,参数可能来自不同的地方,确认有效的参数来自于哪里:SELECT variable_name, variable_sourceASsource, variable_path, set_time, set_userASUSER, set......
  • 【MySQL】MySQL8持久化系统变量
    set命令可以用于将某些全局系统变量持久化到数据目录中的mysqld-auto.cnf文件中,以影响后续启动的服务器操作。resetpersist从mysqld-auto.cnf中删除持久设置。在运行时持......
  • mysql在Linux与widows安装
    一、mysql的安装之前搭建linux下项目的发布,最后遗留的问题时数据库的迁移,如何从windows上迁移到linux上?这里首先进行mysql数据库的安装1、下载mysql安装包在这里下载的......
  • koa连接mysql数据库
    app.js中的代码:constKoa=require('koa2');constapp=newKoa();constport=5050;constRouter=require('koa-router');constrouter=newRouter();cons......
  • sparksql 函数大全
    数学函数函数简介用法acosh反双曲余弦值SELECTacosh(0.5);0.9624236501192069SELECTacosh(3.5);1.9248473002384139asinh反双曲正弦SELECTasinh(1.45);......
  • Mysql 常用命令
    大纲命令执行事务STARTTRANSACTION;//开启事务UPDATE`Users`SETAccountId=0WHEREAccountIdisnullCOMMIT;//提交ROLLBACK;//回滚常见问题Q1.允......
  • MyBatis保姆级理解与使用,动态SQL(核心)
    1. 动态SQL(核心)1.1 简介Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的难点问题。比如:我们在多条......
  • mysql逻辑结构,存储结构
    宏观:库,存储在操作系统目录中表:  微观:段区页一个表就是一个段,mysql分配空间时至少分配一个区,每个区默认时1M(64个page页),mysql最小的IO单元就是PAGE(16KB) ......