参考资料:http://blog.csdn.net/guocuifang655/article/details/3993612

方法一:

在使用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去重的最方便的两种方法相关推荐

  1. mysql去掉两个最高分_MySQL中查询、删除重复记录的方法大全

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as coun ...

  2. mysql前两个月_MySQL数据库表始终保持最近两个月的记录

    实现自动备份的方法很多,这里说的是客户需要始终保持某个表中存储两个月的记录,以便保持性能.过期数据我们建议存储到另外一个表中,以备以后查询使用. 我们采用存储过程+linux Crontab的方式实现 ...

  3. python列表去重函数_对python中两种列表元素去重函数性能的比较方法

    测试函数: 第一种:list的set函数 第二种:{}.fromkeys().keys() 测试代码: #!/usr/bin/python #-*- coding:utf-8 -*- import t ...

  4. 两个对象数组去重的3种方法

    两个对象数组去重的3种方法 前言 问题描述 解决方案一 解决方案二 解决方案三 前言 前段时间写过JavaScript数组去重最简单的 4 种方案,里面的数组元素是基本类型.本文要讲的数组元素是对象, ...

  5. 使用mysql创建外键约束_Mysql创建外键约束的两种方式

    通过给mysql的表字段添加外键约束,可以有效的保持数据的一致性和完整性,数据就不会很容易出问题. 1.创建表时直接创建外键约束create table books( bookid number(10 ...

  6. 两个listmap合并去重_我是如何用单机实现亿级规模题库去重的?

    题外话:欢迎将公众号设置为星标,技术文章第一时间看到.我们将一如既往精选技术好文,提供有价值的阅读.如有读者想要投稿,可以在公众号任意文章下留言,技术博主奖励丰厚. 作者:haolujun cnblo ...

  7. mysql binlog 权限_MySQL如何开启binlog?binlog三种模式的分析

    前提,创建表t,并插入数据,语句如下: CREATE TABLE `t` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `t_modified` ...

  8. php 合并两个数组并去重,合并两个数组 以KEY 作为键

    $a= array( array( 'ID'=> 2 ) ); $b= array( array( 'ID'=> 5656 ) ); print_r($r); //合并两个数组 以ID值 ...

  9. mysql 安全删除_mysql的binlog安全删除的一种方法

    指定过期天数(expire_logs_days) ---适用于单机版mysql! 该参数为全局可动态调整参数,默认值为0,即关闭,取值范围0-99. 1.3.1 参数的查看: mysql> sh ...

最新文章

  1. Sql Server 中锁的概念
  2. 如何在Evolution中加密(六)
  3. mysql索引检测_mysql检测重复索引
  4. tensorflow lstm 预测_图卷积神经网络GCN与递归结构RNN相结合的时间序列预测
  5. Python爬虫(五)
  6. 线程魔术技巧:Java线程可以做的5件事
  7. xp职称计算机考试题库,2015年职称计算机考试XP题库.doc
  8. 12.混淆——混叠图像,对比敏感度,图像压缩_4
  9. 天勤数据结构代码——树基本操作
  10. 对拳击“海盗式”打法特点的剖析
  11. 谈如何归纳和分类美术风格比较合理
  12. TIME_WAIT状态(2MSL)的作用
  13. 解决Win7无法登陆OneDrive并报错0x8004de40问题(亲测解决)
  14. 购物清单(Python实现)
  15. ReSharper配置及用法(转)
  16. 改造Kindeditor之:自定义图片上传插件。 外加给图片增加水印效果的选择。
  17. QC新旧七图汇总连载13——过程决策方法图(PDPC)
  18. java 面向对象P60
  19. layui中使用lay-verify进行条件校验
  20. L4 U2 描述他人

热门文章

  1. PgSQL · 应用案例 · 逻辑订阅给业务架构带来了什么?
  2. Data - 大数据生态圈
  3. JSP——Web应用
  4. SCOM2012功能测试(18)—对象发现(替代)
  5. IPSec L2L ××× 之 Router-to-ASA
  6. F5 V9 利用SCCP实现带外管理及重装系统
  7. VBNET的一些特殊能力
  8. C#多线程和异步(二)——Task和async/await详解(转载)
  9. kindeditor 下图片链接取消边框
  10. Spring的javaMail邮件发送(带附件)