今天在实际开发过程中遇到一个数据库去重查询的问题,在这里给大家分享一下。

类似于上面这张数据表,我们发现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 | 去重查询相关推荐

  1. mysql 关联查询慢_mysql慢查询语句分析总结

    我们经常会接触到MySQL,也经常会遇到一些MySQL的性能问题.我们可以借助慢查询日志和explain命令初步分析出SQL语句存在的性能问题 通过SHOW FULL PROCESSLIST查看问题 ...

  2. mysql 查询重写_mysql 学习 - 查询重写规则

    条件化简 我们编写的查询语句的搜索条件本质上是一个表达式,这些表达式可能比较繁杂,或者不能高效的执行,MySQL的查询优化器会为我们简化这些表达式. 移除不必要的括号 有时候表达式里有许多无用的括号, ...

  3. mysql 查找数据过程_mysql数据库查询过程探究和优化建议

    查询过程探究 我们先看一下向mysql发送一个查询请求时,mysql做了什么? 如上图所示,查询执行的过程大概可分为6个步骤: 客户端向MySQL服务器发送一条查询请求 服务器首先检查查询缓存,如果命 ...

  4. mysql 慢日志 作用_MySQL慢查询日志的作用和开启

    前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...

  5. mysql 前30秒_mysql – 简单查询需要15-30秒

    以下查询非常简单.它从消息表中选择最后20条记录,以便在分页方案中使用.第一次运行此查询时,需要15到30秒.后续运行只需不到一秒钟(我预计会涉及一些缓存).我试图确定为什么第一次这么长时间. 这是查 ...

  6. mysql慢查询单位_MySQL慢查询

    MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句.具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢 ...

  7. mysql or中有空查询慢_MySQL 慢查询日志

    1.定义 2.相关参数 2.开启 3.原因 4.慢查询日志工具mysqldumpslow 1.定义 作用:用来记录在MySQL中响应时间超过阀值的语句. 2.相关参数 mysql> show v ...

  8. mysql两个表查询修改_MySQL:查询、修改(二)

    干货: 使用SELECT查询的基本语句SELECT * FROM 可以查询一个表的所有行和所有列的数据.SELECT查询的结果是一个二维表. 使用SELECT *表示查询表的所有列,使用SELECT ...

  9. mysql数据库查询笔记_mysql笔记: 查询

    mysql笔记: 查询 查询准备 CREATE DATABASE search; use search; # 学生表(student):学号.姓名.性别.出生日期.班级 CREATE TABLE st ...

  10. mysql workbench 导出查询结果_MySQL Workbench查询结果导出步骤

    MySQL Workbench查询结果导出步骤 发布时间:2020-05-19 16:16:31 来源:PHP中文网 阅读:202 作者:三月 本文主要给大家介绍MySQL Workbench查询结果 ...

最新文章

  1. Bootstrap4 更新笔记
  2. 第十五届全国大学生智能车竞赛车模技术检查表格
  3. python的多线程threading
  4. JZOJ 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真
  5. how to use object based exception combined with message class in SE91
  6. java如何加载lambda_Java 8 lambda表达式引入及简单使用
  7. 【MySQL】MySQL 界面连接工具 优化工具 监控工具 其他工具 简介
  8. Codeforces 1043F(容斥+dp)
  9. Proteus ISIS仿真软件中英文元件名称对照
  10. 商业保理业务信息化平台建设的要点分享
  11. 使用echarts制作拓扑图
  12. 桌面图标有阴影的解决方法
  13. 墨尔本计算机读研申请条件,墨尔本大学计算机硕士申请条件
  14. (十二):为什么需要一个新的ORM框架
  15. vue elementui 表格搜索筛选栏组件封装
  16. 农委系统先进集体推荐报告_关于开展全省农林农经系统先进集体和先进工作者(劳动模范)评选推荐工作的通知...
  17. gwo算法matlab源代码,智能优化算法应用:基于GWO优化BP神经网络 - 附代码
  18. android 判断图片的格式的,android判断文件是否是图片文件的方法
  19. 沧小海笔记本之xilinx srio核的学习记录之目录
  20. 文本分类(TFIDF/朴素贝叶斯分类器/TextRNN/TextCNN/TextRCNN/FastText/HAN)

热门文章

  1. 美赛论文格式基本要求
  2. DOS那一代的程序员现在都干嘛呢?
  3. 《初级会计电算化实用教程(金蝶KIS专业版)》一导读
  4. java学生成绩管理系统文库,基于JAVA的学生成绩管理系统的设计与实现
  5. 微信ipad协议源码
  6. 软件测试用例编号命名规则,在TD的测试用例中显示测试用例编号的方法
  7. 湖南对口招生计算机专业试卷,湖南省2018年普通高等学校对口招生考试计算机应用类综合试卷 参考答案...
  8. iChart--组件定制
  9. c++win32项目 如何显示后再删除一个绘图_sai绘图软件中文版
  10. 新版USBCAN卡CAN分析仪的CANCANFD综合测试分析软件LKMaster主要功能介绍