我在___

若问,何处?我在,殿堂

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

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

好的~ 成功啦

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ws13940478976/article/details/52370555
文章标签: mysql sql
个人分类: 数据库
上一篇POI3级以及3级以下表头的报表处理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭