0
点赞
收藏
分享

微信扫一扫

MySQL 数据根据单列或者多列去重,保留数据重置ID


1、查看去重后的数据 DISTINCT

SELECT DISTINCT movie_id,title FROM b_movie

2、 根据某一列查看重复的数据:

SELECT * FROM b_movie WHERE

movie_id IN ( SELECT movie_id FROM ( SELECT movie_id FROM b_movie GROUP BY movie_id HAVING count( movie_id )> 1 ) AS tmp1 )

AND

mid NOT IN ( SELECT mid FROM ( SELECT min( mid ) mid FROM b_movie GROUP BY movie_id HAVING count( movie_id )> 1 ) AS tmp2 );

3、根据某一列去除重复的数据,保留ID最小的 

DELETE FROM b_movie WHERE

movie_id IN ( SELECT movie_id FROM ( SELECT movie_id FROM b_movie GROUP BY movie_id HAVING count( movie_id )> 1 ) AS tmp1 )

AND

mid NOT IN ( SELECT mid FROM ( SELECT min( mid ) mid FROM b_movie GROUP BY movie_id HAVING count( movie_id )> 1 ) AS tmp2 );

 

2'、根据多列查看重复的数据:

SELECT * FROM b_casts WHERE

( cast_id, cast_name ) IN ( SELECT cast_id, cast_name FROM ( SELECT cast_id, cast_name FROM b_casts GROUP BY cast_id, cast_name HAVING count( cast_name )> 1 ) AS tmp1 )

AND

cid NOT IN ( SELECT cid FROM ( SELECT min( cid ) cid FROM b_casts GROUP BY cast_id, cast_name HAVING count( cast_name )> 1 ) AS tmp2 );

3' 、根据多列去除重复的数据,保留ID最小的

DELETE FROM b_casts WHERE

( cast_id, cast_name ) IN ( SELECT cast_id, cast_name FROM ( SELECT cast_id, cast_name FROM b_casts GROUP BY cast_id, cast_name HAVING count( cast_name )> 1 ) AS tmp1 )

AND

cid NOT IN ( SELECT cid FROM ( SELECT min( cid ) cid FROM b_casts GROUP BY cast_id, cast_name HAVING count( cast_name )> 1 ) AS tmp2 );

 

4、保留数据,重置ID

ALTER  TABLE  b_movie DROP mid;

ALTER TABLE b_movie ADD mid mediumint(11) PRIMARY KEY NOT NULL AUTO_INCREMENT FIRST;

 

数据处理效果如下:

MySQL 数据根据单列或者多列去重,保留数据重置ID_数据

MySQL 数据根据单列或者多列去重,保留数据重置ID_数据_02

举报

相关推荐

0 条评论