精华内容
下载资源
问答
  • mysql查询去重

    千次阅读 2020-07-07 12:30:46
    1、在面试的时候碰到一个 问题,就是让写一张表中有id和name 两个字段,查询出name重复的所有数据,现在列下: select * from xi a where (a.username) in (select username from xi group by username having count...

    sql 查出一张表中重复的所有记录数据
    1、在面试的时候碰到一个 问题,就是让写一张表中有id和name 两个字段,查询出name重复的所有数据,现在列下:
    select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1)

    2、查询出所有数据进行分组之后,和重复数据的重复次数的查询数据,先列下:

    select count(username) as ‘重复次数’,username from xi group by username having count(*)>1 order by username desc

    3、一下为 查看别人的 结果,现列下:查询及删除重复记录的方法大全

    1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from people
    where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

    2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
    delete from people
    where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
    and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

    3、查找表中多余的重复记录(多个字段)
    select * from vitae a
    where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

    4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
    delete from vitae a
    where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count() > 1)
    and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(
    )>1)

    5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
    select * from vitae a
    where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count() > 1)
    and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(
    )>1)

    (二)
    比方说
    在A表中存在一个字段“name”,
    而且不同记录之间的“name”值有可能会相同,
    现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
    Select Name,Count() From A Group By Name Having Count() > 1如果还查性别也相同大则如下:
    Select Name,sex,Count() From A Group By Name,sex Having Count() > 1

    (三)
    方法一declare @max integer,@id integerdeclare cur_rows cursor local for select 主字段,count() from 表名 group by 主字段 having count() >; 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0beginselect @max = @max -1set rowcount @maxdelete from 表名 where 主字段 = @idfetch cur_rows into @id,@maxendclose cur_rowsset rowcount 0

    方法二"重复记录"有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

    1、对于第一种重复,比较容易解决,使用select distinct * from tableName  就可以得到无重复记录的结果集。  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除select distinct * into #Tmp from tableNamedrop table tableNameselect * into tableName from #Tmpdrop table #Tmp  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

    2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集select identity(int,1,1) as autoID, * into #Tmp from tableNameselect min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoIDselect * from #Tmp where autoID in(select autoID from #tmp2)  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

    (四)
    查询重复select * from tablename where id in (select id from tablenamegroup by idhaving count(id) > 1)

    展开全文
  • 有一个表user,字段分别有id、nick_name、password、email、phone。 一、单字段(nick_name) 查出所有有重复记录的所有记录 ...select * from user where id in (select max(id) from user group by nick_name having
  • 分组去重,排序之后数据 在ORDER BY前添加GROUP BY aaci.component_id ,使用 component_id 进行排序 SELECT aasi.wt_id as turbineId, aafi.function_id as functionId, aafi.desc as `desc`, aaci.component_id ...

    只排序没有分组之前数据:

    使用:ORDER BY aaci.component_id, aasi.create_time desc
    在这里插入图片描述

    分组去重,排序之后数据

    ORDER BY前添加GROUP BY aaci.component_id ,使用 component_id 进行排序

    SELECT aasi.wt_id as turbineId, aafi.function_id as functionId, aafi.desc as `desc`,  
    aaci.component_id as componentId, aaci.component_name as componentName,
    aasi.peak_peak_value as peakPeakValue, aasi.create_time as createTime
    FROM ais_auxiliary_component_info aaci
    LEFT JOIN ais_auxiliary_signal_info aasi 
    ON aasi.component_id=aaci.component_id
    LEFT JOIN ais_auxiliary_function_info aafi
    ON aaci.function_id=aafi.function_id
    WHERE aafi.function_id = 1 and aasi.wt_id = 1 
    GROUP BY aaci.component_id
    ORDER BY aaci.component_id, aasi.create_time desc
    

    效果:
    在这里插入图片描述

    看出来peakPeakValue和createTime 并不是最新的一条数据

    解决方法

    select中 使用
    SUBSTRING_INDEX(GROUP_CONCAT(aasi.peak_peak_value ORDER BY aasi.create_time desc), ',', 1) as peakPeakValue
    来获取最新的peakPeakValue数据;
    max(aasi.create_time) as createTime 来获取createTime最新数据

    SELECT aasi.wt_id, aafi.function_id, aafi.desc, aaci.component_id, aaci.component_name ,aasi.id as aasiId,
    SUBSTRING_INDEX(GROUP_CONCAT(aasi.peak_peak_value ORDER BY aasi.create_time desc), ',', 1) as peakPeakValue, max(aasi.create_time) as createTime
    FROM ais_auxiliary_component_info aaci
    LEFT JOIN ais_auxiliary_signal_info aasi 
    ON aasi.component_id=aaci.component_id
    LEFT JOIN ais_auxiliary_function_info aafi
    ON aaci.function_id=aafi.function_id
    WHERE aafi.function_id=1 and aasi.wt_id=1 
    GROUP BY aaci.component_id
    ORDER BY aaci.component_id, aasi.create_time desc
    

    效果:
    在这里插入图片描述

    解决思路:

    首先进行分组去重进行排序,然后使用GROUP_CONCAT函数对所需要列,进行组合起来,然后使用时间进行排序,将最新的数据放在第一个,然后再使用SUBSTRING_INDEX()函数取第一个数据就行,时间使用max()函数获取最新时间即可。

    group_concat函数

    group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
    

    SUBSTRING_INDE函数

    substring_index(str,delim,count)
        str:要处理的字符串
        delim:分隔符
        count:计数
    
    展开全文
  • 参考文章:mysql——去重并获取最新记录 如下所示: 问:3条数据都是同一个内容,但是要求只是显示最新的一条数据该如何操作呢? 答: SELECT * FROM t_cb_rkdk_lsly a WHERE a.create_time IN ( SELECT m....

    参考文章:mysql——去重并获取最新记录

    如下所示:

    问:3条数据都是同一个内容,但是要求只是显示最新的一条数据该如何操作呢?

    答:

    SELECT *
    FROM t_cb_rkdk_lsly a
    WHERE a.create_time IN (
      SELECT m.createTime
      FROM (
             SELECT DISTINCT (q.rkdk_guid),
                             max(q.create_time) createTime
             FROM (
                    SELECT *
                    FROM t_cb_rkdk_lsly
                  ) q
             GROUP BY q.rkdk_guid
           ) m
    );

    最终查询结果:

    展开全文
  • mysql 数据库查询去重

    2018-11-19 15:51:02
    刚开始在网上找的办法,试了很多次不管用,一直报错 这个distinct只能查出来一个字段,但是我想返回所有的,这个...Select * From app_set Where id In (Select Max(id) From app_set Group By app_id); 完美成功 ...

    刚开始在网上找的办法,试了很多次不管用,一直报错
    这个distinct只能查出来一个字段,但是我想返回所有的,这个不行

    select distinct app_id from app_set
    

    测试了很久

    Select * From app_set Where id In (Select Max(id) From app_set Group By app_id);
    

    完美成功

    展开全文
  • 下面这个sql是要去取出根据illegal_inspect 这个字段满足带有色情两个字的数据中pkgName,verName 这两个字段唯一不重复的id SELECT count(1) c from task WHERE illegal_inspect LIKE '%色情%' GROUP BY pkgName,...
  • Mysql去重查询(根据指定字段去重)

    千次阅读 2021-03-26 14:11:16
    在日常数据查询中,多有需要进行数据去重的查询,或删除重复数据的情况,以下罗列集中数据去重查询: 1、根据全部字段的去重查询: select distinct * from table 2、根据某些字段的去重查询(不考虑查询其他...
  • mysql多字段查询去重

    千次阅读 2018-07-20 14:49:15
    数据表有主键时,使用group by 获取相同字段的最大...SELECT MAX(r.id) from table r GROUP BY a,b,c,d ) 其中id为表table的主键,a,b,c,d为同时相同时去重的字段。 当数据表没有主键时,需要首先加上主键,使...
  • MySQL单列去重

    千次阅读 多人点赞 2019-06-21 17:49:15
    在平时开发中,我们会碰到对表的某一列数据去重的需求场景,如下student表 建表语句如下 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL, `age` int(11) NOT...
  • mysql 数据查询总结

    2020-05-29 20:59:26
    方式1:查出重复数据(保留的一条不查出,下面是保留了id最小的那条没显示) # project_code 重复认为数据重复 SELECT * FROM pmp_project_collection a WHERE EXISTS ( ...方式2:查询有重复记...
  • 在使用 MySQL 存储数据的时候,经常会遇到 table 中存在重复数据的情况,这个时候,我们就对 table 进行去重,我这里对常用的 MySQL 去重方法做一个简单的总结。 1、distinct select distinct key from table; ...
  • Mysql如何去重

    万次阅读 2019-08-20 17:46:53
    MySQL数据去重的方法 在使用 MySQL 存储数据的时候,经常会遇到 table 中存在重复数据的情况,这个时候,我们就对 table 进行去重,我这里对常用的 MySQL 去重方法做一个简单的总结。 distinct select ...
  • mysql 批量去重

    2021-02-22 19:01:19
    我之前建数据库时不太刻意去设置某一字段的内容唯一,总觉得应用端肯定会考量,事实上大部分应用端的确会卡这个问题,但当两个应用端同时上传或是其他问题时,总之,就是出现了重复数据,如果数据也就一两条的话,倒...
  • mysql 高效的去重插入数据

    千次阅读 2020-01-15 09:45:34
    前言: 我们最简单的想法就是先查询...批量存储10个40ms,批量存储越大,他们两个的差距就越大,又有人提出了select in ,我们批量的去查询,看看键在没在我们批量数据的数组里面,找到在的就忽略掉,确实时间可...
  • mysql——去重并获取最新记录

    万次阅读 2018-07-29 11:59:56
    引言 最近有一个统计的需求,一个案件在崔记中有多条记录,我们需要根据崔记表中的最新一条...刚开始我用了mysql 中的一个求差集ide函数,sql如下: SELECT COUNT(1) FROM robot_collection_record AS b WHERE ...
  • select * from es_goods_registration r where create_data in (select max(create_data) from es_goods_registration group by goods_id)
  • Mysql插入数据去重方法

    千次阅读 2018-03-28 11:10:13
    最近写爬虫,有需求需要将数据插入mysql,由于爬虫采用分布式,可能会多次爬重复页,这时候就需要对数据去重假设:表:test 含 id,a,b (3个字段)主键id自增。1.根据单个字段去重以navicat为例,右键设计表-》...
  • mysql去重后获得最新数据方法

    万次阅读 2016-07-12 10:25:14
    昨天做项目时候突然遇到一个问题,就是我有一张点...我的需求是要从zan中获得去重后的每篇文章最新的点赞数据。当我动手的时候用了group by gid将gid分组。分组后的gid中取得时间最近的数据。这时sql的写法应该是,se
  • MYSQL-去重并且取时间最新

    千次阅读 2020-07-02 14:36:36
    查询出每个学生的每门科目成绩,如果存在多条就取update_time最新的那条 CREATE TABLE `tb_score` ( `id` int(11) NOT NULL, `user_id` varchar(20) NOT NULL, `user_name` varchar(50) NOT NULL, `menu_name`...
  • MySQL数据去重的问题

    2021-05-21 11:51:25
    <code>SELECT b.id, ...这个sql目前0.7秒可以查询出来数据, 目前想加一个 b.user_id的数据去重。  使用groupby的话 时间会在20秒以上了, 使用distinct的话不知道怎么做单字段的</p>
  • MySQL数据去重

    千次阅读 2018-01-30 22:19:06
    在使用 MySQL 存储数据的时候,经常会遇到 table 中存在重复数据的情况,这个时候,我们就对 table 进行去重,我这里对常用的 MySQL 去重方法做一个简单的总结。 distinct select distinct key from table ...
  • 在使用mysql时,有时需要查询出某个字段不重复的记录,distinct 关键字可以过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回所有值。其原因是 distinct只能返回它的目标字段...
  • MySQL去重操作优化到极致

    万次阅读 多人点赞 2019-07-31 15:04:11
    目录 一、巧用索引与变量 1. 无索引对比测试 (1)使用相关子查询 (2)使用表连接 (3)使用变量 ...2. 建立created_time和item_name上的联合索引对比测试 ...(1)查询出4份数据的created_time边...
  • 假设现在有如下N条记录 表明叫book id author title 1 aaa AAA 2 bbb BBB 3 ccc CCC 4 ddd DDD 5 eee AAA 现在想从这5条记录中查询所有title不重复的记录 select distinct title,author from book这样是不可以的 ...
  • 去除重复: DELETE FROM wei_daddy_recommend_copy WHERE id NOT IN (SELECT a.id FROM (SELECT MAX(id) FROM wei_daddy_recommend_copy GROUP BY NAME, sale_price HAVING...mysql不允许在查询数据上进行更新操作...
  • Mysql 去重 聚合

    2019-02-28 14:02:00
    示例数据表中的数据mysql> select * from talk_test; +----+-------+--------+ | id | name | mobile | +----+-------+--------+ | 1 | xiao9 | 555555 | | 2 | xiao6 | 666666 | | 3 | xiao9 | 888888 | ...
  • mysql去重,3亿多数据

    千次阅读 2018-05-18 14:23:40
    差不多3亿6千万数据,需要去重。因为数据量太大,所以: 将数据load data infile到大表里,不进行任何去重操作,没有任何约束。然后将数据分成几十个小表,用这几十个小表去对比大表去重。得到去重后的小表。去重...
  • Mysql数据去重

    2018-05-22 10:55:00
    查询不重复元素个数 select count(distinct domain) from black_botnet_domian; 查询表中元素个数大于等于2的元素 SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING COUNT(goods_...
  • mysql有个关键字distinct用来去重的,但是使用时只能放在查询字段的最前边 如: SELECT DISTINCT user_id,age FROM t_user; 若不是放在最前边,如: SELECT user_id, DISTINCT age FROM t_user;  是会报错的。...
  • MySql去重重复数据

    2020-08-17 11:38:36
    第一种方式 select * from cpic a where not exists (select 1 form cpic b ... 第二种方式 select * from cpic a where a.id in (select result.id from(select max(t.id) from cpic t group by t.barcode) result);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,669
精华内容 6,667
关键字:

maxmysql查询去重数据

mysql 订阅