您的位置:首页 > 数据库 > MySQL

去除mysql表中的重复数据,只保留最早的(最晚的也可以哦~~)

2016-08-30 16:31 603 查看
今天整干着活,就有人找我给下个SQL,说是因为乱插数据导致有一个表里的数据出现啦重复,要去掉重复数据只保留一条,于是开始干活啦,

重复的字段是info_id

第一次写啦个这么SQL

delete from auth
where id not in (select min(id) from auth b GROUP BY b.info_id )


[Err] 1093 - You can’t specify target table ‘wms_inve_transa_auth’ for update in FROM clause

???

话说要是在ORACLE里面这东西应该是不会报错(我忘记啦啊,得有1年多不用oracle啦,有兴趣的童鞋自己去试试,可以告诉我答案,就是不知道能不能评论)啊!!!

好吧我想啦想,要么做个临时表?方法很好,就是比较蠢。。

那么试试隐藏条件中的查询?

DELETE
FROM
auth
WHERE
id NOT IN (
SELECT
minid
FROM
(
SELECT
min(c.id) AS minid
FROM
auth c
GROUP BY
c.info_id
) b
)


好的~ 成功啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql sql