MySql删除重复记录问题

表emp中有主键empid,现在我想要删除非主键字段empno重复的记录,高手指点一下,写个具体的语句,从别的问题那COPY来的就别发了... 表emp中有主键empid,现在我想要删除非主键字段empno重复的记录,高手指点一下,写个具体的语句,从别的问题那COPY来的就别发了 展开
 我来答
sokhoi
2009-07-27 · 超过19用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:50.9万
展开全部
mysql的删除动作不能带有本表的查询动作,意思是你删除A表的东西不能以A表的信息为条件,如下不可以:
delete from A where aa in (select bb from A);
你可以通过建另外一张表,两张表匹配关系操作,如:
create table t_b as select * from t_a group by empno;
delete from t_a where empid not exists (select 1 from t_b where t_a.empid=t_b.empid);
hemu780924
2009-07-27 · TA获得超过662个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:522万
展开全部
insert into tmp (min_empid,num,empids,empno)
select min(empid) min_empid,count(*) num,group_concat(empid) empids ,empno
from emp
group by empno
having num > 1 ;
delete from emp where empid not in (select min_empid from tmp) and find_in_set(empid,(select empids from tmp where tmp.empno=emp.empno)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
犀利的胡茬子
2009-07-30 · TA获得超过663个赞
知道小有建树答主
回答量:853
采纳率:50%
帮助的人:587万
展开全部
以empno相同的,保留empid最小的记录
delete a from [emp] a where exists(select 1 from [emp] where [empno]=a.[empno] and empid<a.empid)

参考资料: http://www.itpub.net/thread-1127193-1-1.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式