mysql关联查询去重_mysql | 去重查询
今天在实际开发过程中遇到一个数据库去重查询的问题,在这里给大家分享一下。
类似于上面这张数据表,我们发现id=5和id=6的数据passWord和userName数据是一样的。我们的需求是去掉重复的数据(passWord,userName)获得结果集,去重的条件就是根据passWord和userName两个字段。
利用 distinct
我们知道,mysql提供了数据去重的方法,利用distinct关键字对需要处理的字段进行去重。我们来看一下效果。
咦?不对啊,为什么只返回了需要去重处理的字段,而我们想要的结果是对所有字段的返回啊。为什么啊?所以我们来简单了解下distinct的用法。在实际应用中,distinct是用来返回非重复记录的条数,而不能返回非重复数据的结果集。这是因为使用distinct之后只能返回去重的字段,而不能返回其他的字段。这显然不是我们所需要的。既然distinct满足不了我们的需求,我们来换一种查询方式。
利用 group by
我们知道除了使用distinct关键字外还可以使用group by关键字对去重数据进行去重查询,来试一下。
看效果确实是符合了我们的需求,但是我们的需求又变了,需要添加一个查询条件,比如说根据id进行去重查询,我们再来看下。
提示很友好,告诉我们这条sql是错误的,这是因为where是对数据集进行筛选的,而group by 是对结果集进行聚集,在执行书序上来说group by 是在where筛选后才执行的,再来简单看下sql的执行顺序。
sql执行顺序
SELECT DISTINCT
FROM
JOIN
ON
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
看到这里我们就知道为什么sql会报错了,所以,要想符合我们的要求可以使用having关键字,因为having执行顺序位于group by之后,而且having是搭配group by一起来使用的,再来看下。
使用having
select * from user GROUP BY `passWord`,userName HAVING id = "1"
利用having关键字对结果集进行过滤后终于达到了符合我们要求的结果。这样就实现了对数据的去重查询。
where 和 having区别
1、having用于groyup by之后。
2、where是用于表中筛选查询,having用于在where和group 结果中查询。
3、havin可以使用聚合函数,而where 不能。
4、having执行顺序位于where之后。
(完)
mysql关联查询去重_mysql | 去重查询相关推荐
- mysql 关联查询慢_mysql慢查询语句分析总结
我们经常会接触到MySQL,也经常会遇到一些MySQL的性能问题.我们可以借助慢查询日志和explain命令初步分析出SQL语句存在的性能问题 通过SHOW FULL PROCESSLIST查看问题 ...
- mysql 查询重写_mysql 学习 - 查询重写规则
条件化简 我们编写的查询语句的搜索条件本质上是一个表达式,这些表达式可能比较繁杂,或者不能高效的执行,MySQL的查询优化器会为我们简化这些表达式. 移除不必要的括号 有时候表达式里有许多无用的括号, ...
- mysql 查找数据过程_mysql数据库查询过程探究和优化建议
查询过程探究 我们先看一下向mysql发送一个查询请求时,mysql做了什么? 如上图所示,查询执行的过程大概可分为6个步骤: 客户端向MySQL服务器发送一条查询请求 服务器首先检查查询缓存,如果命 ...
- mysql 慢日志 作用_MySQL慢查询日志的作用和开启
前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...
- mysql 前30秒_mysql – 简单查询需要15-30秒
以下查询非常简单.它从消息表中选择最后20条记录,以便在分页方案中使用.第一次运行此查询时,需要15到30秒.后续运行只需不到一秒钟(我预计会涉及一些缓存).我试图确定为什么第一次这么长时间. 这是查 ...
- mysql慢查询单位_MySQL慢查询
MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句.具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢 ...
- mysql or中有空查询慢_MySQL 慢查询日志
1.定义 2.相关参数 2.开启 3.原因 4.慢查询日志工具mysqldumpslow 1.定义 作用:用来记录在MySQL中响应时间超过阀值的语句. 2.相关参数 mysql> show v ...
- mysql两个表查询修改_MySQL:查询、修改(二)
干货: 使用SELECT查询的基本语句SELECT * FROM 可以查询一个表的所有行和所有列的数据.SELECT查询的结果是一个二维表. 使用SELECT *表示查询表的所有列,使用SELECT ...
- mysql数据库查询笔记_mysql笔记: 查询
mysql笔记: 查询 查询准备 CREATE DATABASE search; use search; # 学生表(student):学号.姓名.性别.出生日期.班级 CREATE TABLE st ...
- mysql workbench 导出查询结果_MySQL Workbench查询结果导出步骤
MySQL Workbench查询结果导出步骤 发布时间:2020-05-19 16:16:31 来源:PHP中文网 阅读:202 作者:三月 本文主要给大家介绍MySQL Workbench查询结果 ...
最新文章
- Bootstrap4 更新笔记
- 第十五届全国大学生智能车竞赛车模技术检查表格
- python的多线程threading
- JZOJ 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真
- how to use object based exception combined with message class in SE91
- java如何加载lambda_Java 8 lambda表达式引入及简单使用
- 【MySQL】MySQL 界面连接工具 优化工具 监控工具 其他工具 简介
- Codeforces 1043F(容斥+dp)
- Proteus ISIS仿真软件中英文元件名称对照
- 商业保理业务信息化平台建设的要点分享
- 使用echarts制作拓扑图
- 桌面图标有阴影的解决方法
- 墨尔本计算机读研申请条件,墨尔本大学计算机硕士申请条件
- (十二):为什么需要一个新的ORM框架
- vue elementui 表格搜索筛选栏组件封装
- 农委系统先进集体推荐报告_关于开展全省农林农经系统先进集体和先进工作者(劳动模范)评选推荐工作的通知...
- gwo算法matlab源代码,智能优化算法应用:基于GWO优化BP神经网络 - 附代码
- android 判断图片的格式的,android判断文件是否是图片文件的方法
- 沧小海笔记本之xilinx srio核的学习记录之目录
- 文本分类(TFIDF/朴素贝叶斯分类器/TextRNN/TextCNN/TextRCNN/FastText/HAN)
热门文章
- 美赛论文格式基本要求
- DOS那一代的程序员现在都干嘛呢?
- 《初级会计电算化实用教程(金蝶KIS专业版)》一导读
- java学生成绩管理系统文库,基于JAVA的学生成绩管理系统的设计与实现
- 微信ipad协议源码
- 软件测试用例编号命名规则,在TD的测试用例中显示测试用例编号的方法
- 湖南对口招生计算机专业试卷,湖南省2018年普通高等学校对口招生考试计算机应用类综合试卷 参考答案...
- iChart--组件定制
- c++win32项目 如何显示后再删除一个绘图_sai绘图软件中文版
- 新版USBCAN卡CAN分析仪的CANCANFD综合测试分析软件LKMaster主要功能介绍