mysql学习教程,从入门到精通,SQL DISTINCT 子句 (16)

1、SQL DISTINCT 子句

SQL 的 DISTINCT 子句是一个强大的工具,用于在查询结果中消除重复的行,只保留唯一的数据记录。当处理数据库中的数据时,经常会遇到同一列或多列中存在重复值的情况。DISTINCT 子句可以帮助我们专注于唯一的值,这对统计和报告特别有用。

1.1、SQL DISTINCT 子句的定义

DISTINCT 是 SQL 语言中用来消除查询结果中重复记录的关键字。它可以用来从表中获取唯一的值或避免结果中的重复行。当从表中检索数据时,可能会发现某些字段包含多个重复值,此时 DISTINCT 就变得非常有用。

1.2、SQL DISTINCT 子句的使用方法

使用 DISTINCT 子句的基本语法结构如下:

SELECT DISTINCT column1, column2, ..., columnN
FROM table_name;

这里的 column1, column2, ..., columnN 是希望获取其唯一值的数据库表的列名或字段名的列表,而 table_name 是要从中选择数据的表的名称。
如果在 SELECT 语句中指定了多个字段,那么 DISTINCT 将会考虑所有指定字段的组合来确定哪些行是唯一的。

1.3、示例

假设我们有一个名为 Employees 的表,其中包含员工的信息。如果我们只想获取所有不同的姓氏,我们可以使用 DISTINCT 关键字:

SELECT DISTINCT LastName
FROM Employees;

如果一个表中有多个员工拥有相同的姓氏,如 Smith,那么使用 DISTINCT 后,查询结果只会显示一次 Smith

1.4、多列去重

如果我们想要查询没有重复项的姓名和年龄的组合,可以这样做:

SELECT DISTINCT FirstName, LastName, Age
FROM Students;

这条语句会返回姓名、姓氏和年龄的唯一组合。

1.5、 DISTINCTGROUP BY 的区别

需要注意的是,DISTINCTGROUP BY 都可以用来消除重复记录,但是它们的工作方式不同。DISTINCT 是基于整个行来消除重复,而 GROUP BY 则是对特定的列进行分组,然后对每一组执行聚合操作。

1.6、DISTINCT 与索引

DISTINCT 的性能取决于是否能够利用到表上的索引来加速去重过程。如果表中存在适当的索引,那么 DISTINCT 的执行效率会更高。

1.7、 结合使用 WHERE 子句

可以将 DISTINCTWHERE 子句结合起来使用,以便进一步过滤结果集:

SELECT DISTINCT column1, column2
FROM table_name
WHERE condition;

这种组合可以让你获取满足特定条件的唯一结果。
以上就是关于 SQL DISTINCT 子句的基本介绍和使用方法,它是一个非常实用的功能,能够帮助用户更好地理解和分析数据库中的数据。
当然,下面是一些使用 DISTINCT 子句的具体案例分析,以展示它在实际应用中的用法。

1.8、SQL DISTINCT案列分析

案例 1:获取唯一的产品类别

假设有一个销售数据表 Sales,其中包含产品 ID (ProductID) 和产品类别 (Category)。为了找出所有不同的产品类别,可以使用以下查询:

SELECT DISTINCT Category
FROM Sales;

此查询将返回一个列表,其中包含所有不同的产品类别。

案例 2:统计唯一客户的数量

在一个订单表 Orders 中,如果想找出有多少个不同的客户进行了订购,可以通过 DISTINCT 来统计唯一客户:

SELECT COUNT(DISTINCT CustomerID)
FROM Orders;

这条语句返回的结果将是所有不同客户 ID 的数量。

案例 3:按部门统计唯一的员工职位

假设有一个 Employees 表,其中包括员工的部门 (Department) 和职位 (Position)。如果想知道每个部门有多少种不同的职位,可以使用 DISTINCT 并结合 GROUP BY

SELECT Department, COUNT(DISTINCT Position) AS NumberOfPositions
FROM Employees
GROUP BY Department;

此查询将列出每个部门及其对应的唯一职位数量。

案例 4:找出特定条件下的唯一记录

如果你想要找出特定月份内所有唯一的交易日期,假设有一个 Transactions 表,包含交易日期 (TransactionDate) 和金额 (Amount),可以这样做:

SELECT DISTINCT TransactionDate
FROM Transactions
WHERE MONTH(TransactionDate) = 3; -- 假设查找三月份的数据

这条语句将返回三月份所有的不同交易日期。

案例 5:多列唯一组合

如果想要找出所有不同的订单组合,包括订单日期和客户 ID,可以从 Orders 表中使用:

SELECT DISTINCT OrderDate, CustomerID
FROM Orders;

这将返回所有不同的订单日期和客户 ID 组合。

总结

DISTINCT 子句在 SQL 查询中非常有用,特别是在需要去除重复数据并关注唯一记录的情况下。通过上面的例子可以看出,DISTINCT 可以单独使用来获取某一列或多列的唯一值,也可以与其他 SQL 子句如 COUNT, GROUP BY 结合使用来提供更加丰富的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/427801.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux 20】线程控制

文章目录 🌈 一、创建线程⭐ 1. 线程创建函数⭐ 2. 创建单线程⭐ 3. 给线程传参⭐ 4. 创建多线程⭐ 5. 获取线程 ID 🌈 二、终止线程⭐1. 使用 return 终止线程⭐ 2. 使用 pthread_exit 函数终止线程⭐ 3. 使用 pthread_cancel 函数终止线程 &#x1f30…

HTTP协议详解以及常见的状态码

HTTP协议的定义: HTTP(HyperText Transfer Protocol,超文本传输协议)是一种建立在TCP(传输控制协议)之上的无状态连接协议。它是互联网的基础协议之一,用于客户端与服务器之间的通信。HTTP规定…

【Python】练习:控制语句(二)第1关

第1关:分支结构基础实训 第一题第二题第三题第四题(※)第五题(※)第六题第七题 第一题 #第一题 for temp in [-280, -100, 0, 20, 120, 200]:#请在下面编写代码# ********** Begin ********** #if temp>-273.15:F9/…

如何选择适合客户运营团队的帮助中心搭建工具?8款工具盘点

在竞争激烈的商业环境中,客户运营团队需要高效、便捷的工具来搭建帮助中心,以提升客户服务质量和用户体验。选择合适的帮助中心搭建工具,不仅能提高团队工作效率,还能增强客户满意度和忠诚度。本文将为您盘点八款适合客户运营团队…

中间件安全(二)

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言: 前文链接:中间件安全(一) 本文主要讲解Couchdb数据库未授权越权漏洞(CVE-2017-12635)。 靶场链接:Vu…

爱普生相机SD卡格式化后数据恢复指南

我借了朋友的‌爱普生相机,想查看一下内存,哎呀,一不小心按错了,竟然执行了格式化操作,这可真是太让人郁闷了,这还有机会挽救数据吗?心塞,求帮助! 随着数码摄影的普及&am…

java框架

Oozie任务调度框架 Hue hadoop的WEB工具 seatunnel 数据同步框架 TIDB 大数据库支持事物 StreamX fink和spark的集成 OceanBase 阿里巴巴数据库 dooringx-lib、AntV 可视化H5工具 lowcode、Appsmith(推荐)、nocoBase 、Budibase、taskbuilder 低代…

【最经典的79个】软件测试面试题(内含答案)

001.软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与维护(running maintrnacne) 测试用例 用例编号 测试项目 测试标题 重要级别 预置条件 输入数据 执行步骤 预期结果 0002.问&…

Linux基础权限

Linux基础权限 shell的概念Linux基础权限Linux的两种用户Linux的权限管理权限认知权限设置权限掩码粘滞位 shell的概念 (shell)命令行解释器 的存在意义: 将用户的命令翻译给操作系统,然后返回OS的结果给用户;保护OS…

visionpro脚本

visionproToolBlock的脚本的优先级优于工具连线的优先级,一般是照着脚本的执行顺序进行执行对应的工具,最常用的是C#的高级脚本,C#的脚本如下分为5部分。 第一部分:主要是一些库的引用,对于有些类型不知道库的时候&…

云服务器开放端口

1. 控制台开放安全组 例如 阿里云 https://ecs.console.aliyun.com/ 网络与安全 > 安全组 新建或者选择一个安全组 入方向 > 手动添加 2. 服务器防火墙放行端口 在 CentOS 7 中可以使用 firewall-cmd 命令来开放指定端口号 16622。以下是具体步骤: 一、…

python库tenacity最后一次重试忽略异常,并返回None

from tenacity import retry, stop_after_attemptretry(stopstop_after_attempt(3), retry_error_callbacklambda x:None) def my_function():print(retry...)print(1/0)result my_function() print(result)效果如下

centos 7.9安装k8s

前言 Kubernetes单词来自于希腊语,含义是领航员,生产环境级别的容器编排技术,可实现容器的自动部署扩容以及管理。Kubernetes也称为K8S,其中8代表中间8个字符,是Google在2014年的开源的一个容器编排引擎技术&#xff…

Linux基础---07文件传输及解决yum安装失效的方法

Linux文件传输地图如下,先选取你所需的场景,若你是需要Linux和Linux之间传输文件就查看SCP工具即可。 一.下载网站文件 前提是有网: 检查网络是否畅通命令:ping www.baidu.com,若有持续的返回值就说明网络畅通。Ctr…

Docker笔记-容器数据卷

Docker笔记-容器数据卷 docker的理念将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器 之间可以共享数据,Docker容器产生的数据,如果不通过docker commit生成新的镜像&#xf…

发送成绩的app或小程序推荐

老师们,新学期的第一次月考马上开始,是不是还在为如何高效、便捷地发布成绩而头疼呢?别担心,都2024年了,我们有更智能的方式来解决这个问题! 给大家安利一个超级实用的工具——易查分小程序。这个小程序简…

【Unity踩坑】UI Image的fillAmount不起作用

在游戏场景中,我们经常在界面上展示进度条,当然有各种形状的,线性的,长方形的,圆形,环形等等。 Unity中实现这种效果的话,最基本的方法说是改变Image的fillAmout属性。 如果你是初次使用UI Ima…

基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STM32F103C8T6 采用DHT11读取温度、滑动变阻器模拟读取电流、电压。 通过OLED屏幕显示,设置电流阈值为80,电流小阈值为50,电压阈值为60,温度阈值为30 随便哪个超过预祝,则继电器切断,LE…

块匹配算法简介(上)

图像中的运动估计方法大致分为两类:光流法和块匹配算法(BMA,Block Matching Algorithm)。本文将介绍BMA的相关内容,包括基本原理、相似度计算准则与常见的几种搜索方法,如三步法、四步法、钻石搜索法等。 1. 背景 视频中相邻帧往往存在大量的相似内容,即只有局部的一些…

Golang | Leetcode Golang题解之第417题太平洋大西洋水流问题

题目: 题解: type pair struct{ x, y int } var dirs []pair{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}func pacificAtlantic(heights [][]int) (ans [][]int) {m, n : len(heights), len(heights[0])pacific : make([][]bool, m)atlantic : make([][]bool, …