mysql - mysql删除重复行的方法

标签 mysql duplicates subquery

查询:

DELETE FROM orders WHERE sales_id IN (
    SELECT sales_id FROM orders GROUP BY sales_id HAVING COUNT(*) > 1
);

有错误:
错误代码:1093。您无法在 FROM 子句中指定要更新的目标表“orders”

如何解决这个问题?请帮忙。

最佳答案

在 MySQL 中,您无法修改在 SELECT 部分中使用的同一个表。 此行为记录在:http://dev.mysql.com/doc/refman/5.6/en/update.html

您将需要停止使用嵌套子查询并分两部分执行操作,或者使用简单的 where 子句。

如果您想使用子查询,可以尝试为子查询中的表提供别名,如下所示:

DELETE FROM orders WHERE sales_id IN (
    SELECT sales_id FROM (
        SELECT * FROM orders
    ) AS t1 GROUP BY sales_id HAVING COUNT(*) > 1
);

关于mysql - mysql删除重复行的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848537/

相关文章:

php - 避免重复值并在 mysql 数据库中的同一行中获取其他数据集

php - 根据 SESSION 变量将 POST 变量插入 Mysql

php mysql select函数返回0但没有错误

mysql - 为什么mysql更喜欢扫描表而不是使用复合索引?

python - 使用 python3.7 进行慢速列表解析以删除重复项

甲骨文 : Identifying duplicates in a table without index

java - 如何仅将 CSV 中的唯一值添加到 ComboBox 中?

mysql - 在 MySQL 中使用条件查找下一行

mysql - 子查询和Join哪个是最优解?

sql - 可以在 SQL SELECT 语句中使用表作为列吗?