关闭

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

标签: mysqlsql
118人阅读 评论(0) 收藏 举报
分类:

今天整干着活,就有人找我给下个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
    )

好的~ 成功啦

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:863次
    • 积分:37
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档