码迷,mamicode.com
首页 > 数据库 > 详细

MySql删除重复只保留一条

时间:2018-04-14 16:23:58      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:sele   技术分享   src   报错   weight   ima   sel   bar   inf   

本来要删除error_barcode表中barcode值重复的只保留一条

表结构如下(PS:id是自增长,该图是删除成功所以id不连续)

技术分享图片

sql语句如下:

DELETE
FROM
    error_barcode
WHERE
    barCode IN (
        SELECT
            barCode
        FROM
            error_barcode
        GROUP BY
            barCode
        HAVING
            count(barCode) > 1
    )
AND id NOT IN (

    SELECT
        min(id)
    FROM
        error_barcode
    GROUP BY
        barCode
    HAVING
        count(barCode) > 1
)

但是却报错误

技术分享图片

上网查找了下,这是MySql的一个问题,就是不能再同一个语句里对同一张表先select某些值在update,

 那就需要把子查询在放入一个子查询中

DELETE from error_barcode 
WHERE barCode in(
    select a.barCode from(select * from error_barcode)a  GROUP BY barCode having count(barCode)>1
)and id not in (
    select min(id) from(select * from error_barcode)b  GROUP BY barCode having count(barCode)>1
)

可以看到我把下面两个子查询

 SELECT
            barCode
        FROM
            error_barcode
        GROUP BY
            barCode
        HAVING
            count(barCode) > 1
 SELECT
        min(id)
    FROM
        error_barcode
    GROUP BY
        barCode
    HAVING
        count(barCode) > 1

改成

select a.barCode from(select * from error_barcode)a  GROUP BY barCode having count(barCode)>1
 select min(id) from(select * from error_barcode)b  GROUP BY barCode having count(barCode)>1

就行了

技术分享图片

 

MySql删除重复只保留一条

标签:sele   技术分享   src   报错   weight   ima   sel   bar   inf   

原文地址:https://www.cnblogs.com/xudongxuIT/p/8831977.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!