mysql去重的两种方法详解及实例代码

发布时间 - 2026-01-10 22:24:50    点击率:

mysql去重

方法一:    

在使用MySQL时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段

下面先来看看例子:

   table
  id name
  1 a
  2 b
  3 c
  4 c
  5 b

库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。

select distinct name from table


得到的结果是:

 name
  a
  b
  c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

select distinct name, id from table

结果会是:

 id name
  1 a
  2 b
  3 c
  4 c
  5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被除。。。。。。。

我们再改改查询语句:

select id, distinct name from table

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能报错。。。。。。。

最终好用的语句如下:

select *, count(distinct name) from table group by name


结果:

  id name count(distinct name)
  1 a 1
  2 b 1
  3 c 1

最后一项是多余的,不用管就行了,目的达到。。。。。

哦,对,再顺便说一句,group by 必须放在 order by 和 limit之前,不然会报错。。。。。。。。!OK了

总结语句:select *, count(distinct name) from (select * from table……等嵌套语句) group by name

方法二:

利用group by

SELECT * FROM( 
select * from customer where user=( 
  SELECT source_user from customer WHERE user='admin') UNION ALL select * from customer where user=( 
  select source_user from customer where user=( 
    SELECT source_user from customer WHERE user='admin')) union ALL select * from customer where user=( 
  select source_user from customer where user=( 
    select source_user from customer where user=( 
      SELECT source_user from customer WHERE user='admin'))) UNION ALL select * from customer where source_user=(/*我的上线的上线的user*/ 
  select user from customer where user=( 
    select source_user from customer where user=( 
      SELECT source_user from customer WHERE user='admin'))) union all select * from customer where source_user=(/*我的上线的上线的上线user*/ 
  select user from customer where user=( 
  select source_user from customer where user=( 
    select source_user from customer where user=( 
      SELECT source_user from customer WHERE user='admin'))))) as alias group by user; 

注意加别名,不然报错,注意在where语句外面包装一下,再用group by去重才会生效。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# mysql去重  # mysql去重两种方法  # mysql去重几种方法  # mysql 开发技巧之JOIN 更新和数据查重/去重  # MySQL 数据查重、去重的实现语句  # 一条sql语句完成MySQL去重留一  # MySQL去重的方法整理  # 浅谈sql数据库去重  # SQL分组排序去重复的小实例  # 一次SQL如何查重及去重的实战记录  # 报错  # 放在  # 才会  # 的是  # 是一个  # 那就  # 一句  # 用了  # 希望能  # 得多  # 这只  # 实际情况  # 也得  # 能把  # 再用  # 谢谢大家  # 好用  # 错误信息  # 用它  # 想用 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JS中页面与页面之间超链接跳转中文乱码问题的解决办法  ,交易猫的商品怎么发布到网站上去?  如何在阿里云虚拟主机上快速搭建个人网站?  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  如何挑选高效建站主机与优质域名?  Laravel怎么使用Intervention Image库处理图片上传和缩放  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  如何在阿里云服务器自主搭建网站?  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  Python图片处理进阶教程_Pillow滤镜与图像增强  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  高性能网站服务器部署指南:稳定运行与安全配置优化方案  Laravel如何配置任务调度?(Cron Job示例)  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  jQuery validate插件功能与用法详解  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何在IIS7中新建站点?详细步骤解析  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  如何在局域网内绑定自建网站域名?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  JavaScript Ajax实现异步通信  EditPlus中的正则表达式 实战(1)  如何选择可靠的免备案建站服务器?  Python文本处理实践_日志清洗解析【指导】  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Windows Hello人脸识别突然无法使用  中国移动官方网站首页入口 中国移动官网网页登录  浅谈Javascript中的Label语句  如何获取上海专业网站定制建站电话?  如何确保西部建站助手FTP传输的安全性?  如何快速查询网址的建站时间与历史轨迹?  使用spring连接及操作mongodb3.0实例  JavaScript模板引擎Template.js使用详解  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何实现模型的全局作用域?(Global Scope示例)  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  java获取注册ip实例  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel怎么上传文件_Laravel图片上传及存储配置  如何实现建站之星域名转发设置?  Laravel storage目录权限问题_Laravel文件写入权限设置