从 MySQL 表中删除重复项
在 MySQL 中,您可能会遇到这样的场景:您需要从表中删除重复行,同时确保通过 ID 列进行唯一标识。虽然提供的查询对 MySQL 5.7 及更高版本有效,但它在 5.0 等早期版本中不起作用。
要在 MySQL 5.0 中实现所需的行为,您可以使用 IN 运算符而不是 = 重写查询用于将 ID 与子查询结果集进行比较。此外,您无法直接从同一查询中的子查询修改表。
要解决此限制,您可以执行单独的 SELECT 和 DELETE 查询,或使用嵌套子查询为内部子查询的结果设置别名。下面是嵌套子查询方法的示例:
DELETE FROM posts WHERE id IN ( SELECT * FROM ( SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 ) ) AS p )
或者,按照 Mchl 的建议,您可以使用联接来删除重复行,方法是根据 ID 列将表与其自身联接起来,并使用 HAVING 子句来删除重复行。过滤重复的 ID。
以上是如何从 MySQL 表(5.0 及以上版本)中删除重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!