无需外部脚本即可删除MySQL中的重复行
在某些情况下,您可能需要根据特定列的组合删除MySQL表中的重复行。以下探讨如何仅使用SQL查询来实现此目的,避免使用服务器端脚本。
背景
如初始问题所述,该表包含多个列,包括'id'、'url'、'title'、'company'和'site_id'。目标是删除'title'、'company'和'site_id'具有相同值的那些行。
解决方案
删除重复行的一种有效方法是使用这三列上的UNIQUE索引。创建此类索引的语法如下:
<code class="language-sql">ALTER IGNORE TABLE jobs ADD UNIQUE INDEX idx_name (site_id, title, company);</code>
请注意语句中使用了关键字'IGNORE'。这会告诉MySQL在创建索引时忽略重复行。这意味着这些重复行将从表中删除。
额外好处
除了删除现有重复行外,添加UNIQUE索引还可以防止将来插入重复行。任何尝试插入已存在'site_id'、'title'和'company'组合的行都会导致错误。
注意:
请注意,此功能已在MySQL 5.7及更高版本中删除。因此,此解决方案不再适用于这些MySQL版本。
以上是如何仅使用 SQL 查询删除 MySQL 中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!