首页 / MYSQL / mysql删除重复记录sql语句
mysql删除重复记录sql语句
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql删除重复记录sql语句,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2992字,纯文字阅读大概需要5分钟。
内容图文
我们经常会碰到需要删除数据表中重复记录,下面我来总结了几种能删除重复记录并助相对来讲效率是非常不错的,有需要了解的朋友可进入参考。
创建一个表用来存放,要删除的记录的id信息:
代码如下 | |
CREATE TABLE `tmp_ids` ( |
如果要删除的记录不多的话,可以把这个表创建成内存表形式:
代码如下 | |
CREATE TABLE `tmp_ids` ( |
然后在test表中删除重复记录:
代码如下 | |
insert into tmp_ids min(id),name from test name having count(*)>1 order by null; |
方法二
复制无重复记录到新表格,删除旧表格,然后重命名新表格为旧表名称。
代码如下 | |
mysql> select * from duplicate where id in(select min(id) from duplicate group by name); +----+-------+ | id | name | +----+-------+ | 1 | wang | | 3 | wdang | | 5 | wdand | | 6 | wddda | +----+-------+ 4 rows in set (0.01 sec) mysql> create table duplica select * from duplicate where id in(select min(id) from duplicate group by name); Query OK, 4 rows affected (0.02 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> drop table duplicate; Query OK, 0 rows affected (0.01 sec) mysql> alter table duplica rename to duplicate; Query OK, 0 rows affected (0.00 sec) mysql> select * from duplicate; +----+-------+ | id | name | +----+-------+ | 1 | wang | | 3 | wdang | | 5 | wdand | | 6 | wddda | +----+-------+ 4 rows in set (0.00 sec) mysql> alter table duplicate modify id int(2) not null primary key auto_increment; Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 |
后来想了一个语句搞定了:
代码如下 | |
mysql> use mysql Database changed mysql> select * from duplicate; +----+-------+ | id | name | +----+-------+ | 1 | wang | | 3 | wdang | | 5 | wdand | | 6 | wddda | | 2 | wang | | 4 | wdang | +----+-------+ 6 rows in set (0.00 sec) mysql> delete duplicate as a from duplicate as a, -> ( -> select * from duplicate group by name having count(1)>1) as b -> where a.name=b.name and a.id > b.id; Query OK, 2 rows affected (0.00 sec) mysql> select * from duplicate; +----+-------+ | id | name | +----+-------+ | 1 | wang | | 3 | wdang | | 5 | wdand | | 6 | wddda | +----+-------+ 4 rows in set (0.00 sec) |
保留ID最小的记录。
第1种:
代码如下 | |
delete from %s where goodsurl in (select goodsrul as gurl1 from %s #group by grul1 having count(gurl1)>1)rs1 and id not in (select min(id)as id2 from %s #group by goodsurl having count(goodsurl)>1)rs2"%(a,a,a) |
第2种:这种方法不使用子集,但是我不知道怎么把rs1,rs2里面的元组嵌入到SQL语句中,
代码如下 | |
exeSql = "select min(id) from %s group by goodsurl havingcount(goodsurl)>1)"%(a,) |
内容总结
以上是互联网集市为您收集整理的mysql删除重复记录sql语句全部内容,希望文章能够帮你解决mysql删除重复记录sql语句所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。