使用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
)