mysql去重

MySQL去重显示指定字段信息

大兔子大兔子 提交于 2020-03-24 13:50:59
在使用MYSQL的select distinct name from table语句时,输出的只是去重之后name字段的信息,而希望的是能够输出考生ID、考试时间、考试成绩等的信息。使用 select distinct name, sorce from table 结果发现去重不起作用,因为MYSQL认为要sorce和name同时重复才会去除。 最终解决办法如下: select *, count(distinct name) from table group by name 如果SQL语句还有limit,order by等条件,必须放在group by后面。 这样就达到了既去重,又能够输出更多字段信息的目的. SELECT语句,去除某个字段的重复信息 ,例如: 表名:table id uid username message dateline 1 6  a    111    1284240714(时间戳) 2 6  a    222    1268840565 3 8  b    444    1266724527 4 9  c    555    1266723391 执行语句(去除username字段重复信息并按时间排序): SELECT * FROM table a INNER JOIN ( SELECT max( dateline ) AS dateline FROM

MYSQL字段值去重

喜夏-厌秋 提交于 2020-03-24 13:31:35
1.根据名称分组去重,并查询记录ID select max(id) from T_TABLE GROUP BY name 2.根据ID获取记录 select * from T_TABLE where ID in ( select max(id) from T_TABLE GROUP BY name ) 来源: https://www.cnblogs.com/Bud-blog/p/11882925.html

MySQL LEFT JOIN去重问题

独自空忆成欢 提交于 2020-02-16 23:46:54
left join 基本用法 A LEFT JOIN B ON 条件表达式 left join 是以A表为基础,A表即左表,B表即右表。 左表(A)的记录会全部显示,而右表(B)只会显示符合条件表达式的记录,如果在右表(B)中没有符合条件的记录,则记录不足的地方为NULL。 使用left join, A表与B表所显示的记录数为 1:1 或 1:0,A表的所有记录都会显示,B表只显示符合条件的记录。 但 如 果 B 表 符 合 条 件 的 记 录 数 大 于 1 条 , 就 会 出 现 1 : n 的 情 况 , 这 样 l e f t j o i n 后 的 结 果 , 记 录 数 会 多 于 A 表 的 记 录 数 。 \color{red}{但如果B表符合条件的记录数大于1条,就会出现1:n的情况,这样left join后的结果,记录数会多于A表的记录数。} 但 如 果 B 表 符 合 条 件 的 记 录 数 大 于 1 条 , 就 会 出 现 1 : n 的 情 况 , 这 样 l e f t j o i n 后 的 结 果 , 记 录 数 会 多 于 A 表 的 记 录 数 。 这个是我没想到的。。。我以为left join只会以A表为主,谁曾想,B表还能影响。。。 所以解决办法都是从一个出发点出发,使B表能返回的数据去个重就行了 1、 select DISTINCT(id

MySQL对查询结果去重

我的未来我决定 提交于 2020-02-08 17:26:51
用 distinct 关键字去除重复记录,比如查询EMP表中JOB的种类: MariaDB [powernode]> select distinct JOB from EMP; 注意://下面这句sql语句是 错误 的,distinct只能出现在所有字段的最前面 MariaDB [powernode]> select ENAME,distinct JOB from EMP; 查询DEPTNO和JOB两栏都不重复的数据: MariaDB [powernode]> select distinct DEPTNO,JOB from EMP; 常见的案例:查询岗位的数量: MariaDB [powernode]> select count(distinct JOB) from EMP; 来源: CSDN 作者: 别断 链接: https://blog.csdn.net/Until_U/article/details/104222604

mysql去重的最方便的两种方法

左心房为你撑大大i 提交于 2020-01-25 23:47:08
参考资料: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

mysql中去重 distinct 用法

眉间皱痕 提交于 2020-01-23 11:16:34
在使用mysql时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user: 用distinct来返回不重复的用户名:select distinct name from user;,结果为: 这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:select distinct name,id from user;,这样的结果为: distinct name,id 这样的mysql 会认为要过滤掉name和id两个字段都重复的记录,如果sql这样写:select id,distinct name from user,这样mysql会报错,因为distinct必须放在要查询字段的开头。 所以一般distinct用来查询不重复记录的条数。 如果要查询不重复的记录,有时候可以用group by : select id,name from user group by name; 来源: https://www.cnblogs.com/lxwphp/p/11339949.html

MySQL 中去重 distinct 用法

和自甴很熟 提交于 2020-01-21 14:55:39
在使用 MySQL 时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user: 用distinct来返回不重复的用户名:select distinct name from user;,结果为: 这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:select distinct name,id from user;,这样的结果为: distinct name,id 这样的mysql 会认为要过滤掉name和id两个字段都重复的记录,如果sql这样写:select id,distinct name from user,这样mysql会报错,因为distinct必须放在要查询字段的开头。 所以一般distinct用来查询不重复记录的条数。 如果要查询不重复的记录,有时候可以用group by : select id,name from user group by name; 来源: https://www.cnblogs.com/zhuyongzhe/p/7693797.html

mysql中去重 distinct 用法

末鹿安然 提交于 2020-01-18 19:28:10
在使用 MySQL 时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user: 用distinct来返回不重复的用户名:select distinct name from user;,结果为: 这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:select distinct name,id from user;,这样的结果为: distinct name,id 这样的mysql 会认为要过滤掉name和id两个字段都重复的记录,如果sql这样写:select id,distinct name from user,这样mysql会报错,因为distinct必须放在要查询字段的开头。 所以一般distinct用来查询不重复记录的条数。 如果要查询不重复的记录,有时候可以用group by : select id,name from user group by name; 来源: https://www.cnblogs.com/shiluoliming/p/6604407.html

MySQL 去重方法之一

♀尐吖头ヾ 提交于 2020-01-16 05:57:55
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是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

关于mysql去重

♀尐吖头ヾ 提交于 2020-01-14 03:25:12
今天在工作中,有个sql查询需要根据某个字段去重,当时想着用DISTINCT,还是GROUP BY,一番测试之后,发现自己的sql功底还是不够好,慢慢积累吧。简单说说两者的使用区别: (1)创建测试表t_student,并插入如下数据 (2)需求是:根据name的不同,查询所有数据 1)使用DISTINCT SELECT DISTINCT t.`name`,t.id,t.age,t.clazz_id from t_student t; 查询结果如下: 可以发现,并没有达到去重的目的,因为DISTINCT是对记录去重,只有所有查询字段都相同才算是重复的,如果只查name是OK的,但是实际中,不可能只查name: 2)使用GROUP BY SELECT * from t_student t GROUP BY t.`name`; 查询结果如下: 可以发现,已经达到了去重的目的。group by主要用于统计分析的分组函数,group即是分组的意思。 其他: 1)工作中发现,group by要放在where 所有条件的最后面才起作用,目前我在测试中重现不了该问题,不过这个问题确实存在,我当时以为用了group by就万事大吉了,谁知道放在了where 之后的2个and条件之间,然后就没有达到去重的效果。 来源: CSDN 作者: 随新飞翔 链接: https://blog.csdn.net