gpt4 book ai didi

php - 查找并删除后面的重复记录

转载 作者:行者123 更新时间:2023-11-29 04:05:57 24 4
gpt4 key购买 nike

我有一个大约有 0.5 到 100 万条记录的表。该表具有 varchar 字段的重复记录。

有点像

ID int(11)
TITLE varchar(100)

有很多记录具有重复的 TITLE 值。

我需要删除重复的记录。第一步是找到它们。我想有两种方法:

  1. 使用GROUP BY TITLE HAVING COUNT(*) > 1

  2. 使用 SELECT ID, TITLE FROM MY_TABLE 逐条记录然后为每条记录使用 SELECT ID FROM MY_TABLE WHERE TITLE='".$row['TITLE']." AND ID <> '".$row['ID']."'

问题是哪种方法效率高?

或者还有其他更有效的方法吗?

我使用 php 作为基本语言。

最佳答案

要删除所有重复记录(具有相同标题),您可以使用此查询:

DELETE B
FROM your_table A
INNER JOIN your_table B ON A.TITLE = B.TITLE AND A.ID < B.ID.

此查询将删除所有后面的重复记录,同时保留第一个。


为了保持最新,同时删除所有之前的重复记录:

DELETE A
FROM your_table A
INNER JOIN your_table B ON A.TITLE = B.TITLE AND A.ID < B.ID.

编辑:

如果您想在执行删除操作之前查看后面哪些(重复)记录将被删除,请运行以下查询:

SELECT B.*
FROM your_table A
INNER JOIN your_table B ON A.TITLE = B.TITLE AND A.ID < B.ID.

This assumes that all NEW ID's will be greater than than prior ID's. A pretty safe assumption but caution is warranted

感谢@xQbert 的补充。

关于php - 查找并删除后面的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40582910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com