mysql数据库删除重复数据

2024年11月30日 09:53
有4个网友回答
网友(1):

直接拿1楼的来改吧,

delete from zhszty_ebook
where id not in(
select * from (select max(id) from zhszty_ebook group by url
) as tmp);------------mysql有个特性,对于表进行修改,删除操作,子查询不能和外层的查询的表一样,所以在加个select就可以了。其他数据库按照楼上的那个是没问题的

网友(2):

select max(id),url into #zhszty_ebook from zhszty_ebook
--先查询到临时表中
delete * from zhszty_book
--删除原表数据,或进干脆删除原来的表
insert into zhsty_book select * from #zhsty_book
--向原因添加数据,id如果是自增的则不能够直接添加,考虑重置一下后再添加。

如果原表的中的id没有多大使用的话——我的意思是重新编写id的话。
select distint url from zhszty_book
--只取出url并去掉重复值,清除原表数据后,然后再进行添加。

清除原表或添加不重复数据后,建产唯一索引:
create unique clustrede index IX_URL
on zhszty_book(url ASC);

建立唯一索引后不再能添加重复的url了!看看你们的数据库分析师——对修选键还不建立一个唯一非聚集索引,重复是必然的!你们的数据库分析师不合格啊!

网友(3):

alter ignore table zhszty_ebook add unique key(id,url).

网友(4):

delete from zhszty_ebook
where id not in(
select max(id) from zhszty_ebook group by url
);