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

MySQL中删除重复数据只保留一条

2017-04-24 20:33 429 查看
使用SQL删除表中重复数据(单字段):

1.查询重复数据:

SELECT
*
FROM
info_1688
WHERE
storeURL IN (
SELECT
storeURL
FROM
info_1688
GROUP BY
storeURL
HAVING
COUNT(storeURL) > 1
)


2.删除重复数据:

DELETE
FROM
info_1688
WHERE
storeURL IN (

SELECT
storeURL
FROM
info_1688
GROUP BY
storeURL
HAVING
COUNT(id) > 1

)
AND id NOT IN (

SELECT
MIN(id) AS id
FROM
info_1688
GROUP BY
storeURL
HAVING
COUNT(id) > 1

)


Mysql异常:you can’t specify target table ‘info_1688’ for update in FROM clause

解决方法:select的结果再通过一个中间表select,可以避免此错误

DELETE
FROM
info_1688
WHERE
storeURL IN (
SELECT storeURL FROM (
SELECT
storeURL
FROM
info_1688
GROUP BY
storeURL
HAVING
COUNT(id) > 1
) AS tab1
)
AND id NOT IN (
SELECT id FROM (
SELECT
MIN(id) AS id
FROM
info_1688
GROUP BY
storeURL
HAVING
COUNT(id) > 1
) AS tab2
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: