mysql数据库删除重复数据

zhszty_ebook表有两个字段id,url,id是唯一标识,url有重复数据,要删除url重复的... zhszty_ebook表有两个字段id,url,id是唯一标识,url有重复数据,要删除url重复的 展开
 我来答
汪雄辉拉
推荐于2017-09-16 · TA获得超过2966个赞
知道大有可为答主
回答量:1430
采纳率:0%
帮助的人:1648万
展开全部
直接拿1楼的来改吧,

delete from zhszty_ebook
where id not in(
select * from (select max(id) from zhszty_ebook group by url
) as tmp);------------mysql有个特性,对于表进行修改,删除操作,子查询不能和外层的查询的表一样,所以在加个select就可以了。其他数据库按照楼上的那个是没问题的
更多追问追答
追问
我这里有16W条数据,正常应该是3W条数据,要执行多久?
追答
not in的效率比较差,你可以给url和id建个联合索引,
百度网友66a8d48e5
2013-03-12 · TA获得超过7687个赞
知道大有可为答主
回答量:3002
采纳率:12%
帮助的人:3915万
展开全部
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了!看看你们的数据库分析师——对修选键还不建立一个唯一非聚集索引,重复是必然的!你们的数据库分析师不合格啊!
追问
能不能用一条语句写出来,性能要好
追答
不能,你与成批处理,可以写在一个文件中,但不是一句SQL,最后建索引号时必须是第一句,换句话来说,在create index前必须加一个go语句!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kofjk1000
2013-03-12
知道答主
回答量:32
采纳率:0%
帮助的人:24.4万
展开全部
alter ignore table zhszty_ebook add unique key(id,url).
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leedone310
2013-03-12 · 超过31用户采纳过TA的回答
知道答主
回答量:200
采纳率:0%
帮助的人:91.8万
展开全部
delete from zhszty_ebook
where id not in(
select max(id) from zhszty_ebook group by url
);
追问
才看清楚,你这是啥玩意?逗我玩呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式