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