返回顶部
首页 > mysql如何删除重复行
  • 46
分享到

mysql如何删除重复行

2024年03月27日 46人浏览 编程网

摘要

删除 MySQL 中的重复行是一个常见的操作,要求删除具有相同值的所有行,保留唯一的一行。这可以通过使用 DISTINCT 关键字或 GROUP BY 子句结合 DELETE 语句来实现。

详细说明

使用 DISTINCT 关键字

DISTINCT 关键字用于从结果集中返回唯一值。通过将 DISTINCT 置于要删除的列之前,可以从表中删除重复行,同时保留唯一行。语法如下:

DELETE FROM table_name
WHERE column_name IN (SELECT DISTINCT column_name FROM table_name);

例如:

DELETE FROM students
WHERE student_id IN (SELECT DISTINCT student_id FROM students);

此查询将从 students 表中删除所有重复的 student_id 行,而保留唯一的一行。

使用 GROUP BY 子句

GROUP BY 子句用于将数据分组并根据组中的行执行聚合操作。通过将 GROUP BY 用于要删除的列,可以聚合重复行并仅保留组中的一个代表行。语法如下:

DELETE t1
FROM table_name t1
JOIN (SELECT column_name, MIN(id) AS min_id
      FROM table_name
      GROUP BY column_name) t2
ON t1.column_name = t2.column_name AND t1.id <> t2.min_id;

例如:

DELETE t1
FROM students t1
JOIN (SELECT student_id, MIN(id) AS min_id
      FROM students
      GROUP BY student_id) t2
ON t1.student_id = t2.student_id AND t1.id <> t2.min_id;

此查询将从 students 表中删除所有重复的 student_id 行(保留 id 最小的行),同时保留唯一的一行。

性能注意事项

  • 使用 DISTINCT 关键字比使用 GROUP BY 子句更快,特别是在表较大的情况下。
  • 如果要删除的列包含大量重复值,DISTINCT 可能会导致性能下降。
  • 如果要保留特定组的代表行,GROUP BY 子句比 DISTINCT 更合适。

其他方法

除了上述方法外,还可以使用以下方法删除重复行:

  • 临时表:创建临时表来存储唯一值,然后使用 NOT IN 子句从原始表中删除重复行。
  • 子查询:使用子查询来标识要删除的重复行的行 ID,然后使用 DELETE 语句删除这些行。
  • 存储过程:创建存储过程来执行删除重复行的任务,提供可重用性和可维护性。

以上就是mysql如何删除重复行的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: mysql如何删除重复行

本文链接: https://www.lsjlt.com/wiki/245759d3b0.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作