《MysqL入门MysqL去重的方法整理》要点:
本文介绍了MysqL入门MysqL去重的方法整理,希望对您有用。如果有疑问,可以联系我们。
MysqL去重的方法整理MysqL实例
【初级】有极少的重复行MysqL实例
使用distinct查出来,然后手动一行一行删除.MysqL实例
【中级】按照单个字段的重复去重MysqL实例
例如:对ID字段去重MysqL实例
使用方法:获取ID的重复字段的值,利用相同ID字段所在的行中,比较出数据不同的字段,删除 除了最小(或最大)的字段所在的该行之外的所有重复的行.一般使用主键来比较,因为主键的值一定是唯一值,绝对不相同.MysqL实例
ID name1 a1 b2 c2 a3 c
结果:MysqL实例
ID name1 a 2 a
*** 作:MysqL实例
delete from a_tmp where ID in (select * from (select b.ID from a_tmp b group by b.ID having count(b.ID) >1) bb) and name not in (select * from (select min(a.name) from a_tmp a GROUP BY a.ID having count(a.ID) >1) aa);
注意:MysqL实例
上述加粗并绿色的字,必须加别名,必须使用select * from (……)这样的格式,否则会报错:MysqL实例
[Err] 1093 - You can't specify target table 'a_tmp' for update in FROM clauseMysqL实例
【高级】按多个字段的重复来去重MysqL实例
例如:对ID,name相同的去重,即:对ID,name都相同的算作重复行,对ID相同而name不同的算作不重复行MysqL实例
使用方法:和单个字段相似,一般使用主键来比较,因为主键的值一定是唯一值.MysqL实例
ID name rowID1 a 11 a 21 b 32 b 42 b 53 c 63 d 7
结果:MysqL实例
ID name rowID1 a 1 1 b 32 b 43 c 63 d 7
*** 作:MysqL实例
第一种:MysqL实例
delete from a_tmp where (ID,name) in (select * from (select b.ID,b.name from a_tmp b group by b.ID,b.name having count(b.ID) >1) bb) and rowID not in (select * from (select min(a.rowID) from a_tmp a group by a.ID,a.name having count(a.ID) >1) aa);
第二种:MysqL实例
将ID和name字段的值连接起来插入到临时表中b_tmp,这样便可以使用【中级】的单字段的判断删除方法.MysqL实例
#将两字段连接的值,a_tmp表中唯一值的字段插入b_tmp表MysqL实例
insert into b_tmp select concat(ID,name),rowID from a_tmp;#查出需要留下来的行select ID_name,max(rowID) from b_tmp group by ID_name having count(ID_name)>1;#使用【中级】的方法,或存储过程完成去重的工作
【终极】每行都有两份一样的数据MysqL实例
例如:MysqL实例
使用方法:对于整行的数据都一样,是没办法使用SQL语句删除的,因为没有可以使用的条件限制来留下一行删除所有与其相同的行.没有不同的字段可以自己创造不同的字段,即:添加一个字段,设为自增长,并设为主键,它会自动添加上值.MysqL实例
ID name1 a1 a1 b1 b2 c2 c3 c3 c
结果:MysqL实例
ID name rowID1 a 11 b 32 c 53 c 7
*** 作:MysqL实例
添加一个自增长的字段,并暂时设为主键.MysqL实例
使用上面【中级】和【高级】的方法 *** 作.MysqL实例
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!MysqL实例
总结以上是内存溢出为你收集整理的Mysql入门MySQL去重的方法整理全部内容,希望文章能够帮你解决Mysql入门MySQL去重的方法整理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)