gpt4 book ai didi

mysql - 选择并删除具有特定 ID 的重复记录

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

我有一个包含 600.000 条记录且 ID 自动递增的 MySQL 数据库。我又插入了 20,000 条 id 超过 700,000 的记录。

我想获取具有重复“field1”值的插入记录的 ID(即 id>700000)。

我尝试:

SELECT id FROM my_table 
WHERE id>700000
AND field1 IN (SELECT field1 FROM my_table WHERE id<700000)

此请求未运行...等待 1 小时后我仍然没有任何结果。

通常当我想抑制重复时我会这样做:

ALTER IGNORE TABLE my_table ADD UNIQUE INDEX(field1)

但是如果我这样做,我不确定它将删除哪个重复行。我不能删除那些 id<700000...

有什么想法吗?

最佳答案

首先,您可以使用条件聚合来执行此操作:

select field1, group_concat(id) as ids
from my_table
group by field1
having min(id) < 700000 and max(id) > 700000;

或者,如果您只需要大于 700000 的 id,则使用:

group_concat(case when id > 700000 then id end) as ids

你可以用你的方法。我建议 exists 而不是 in 并且您需要一个索引:

SELECT id
FROM my_table t
WHERE t.id > 700000 AND
EXISTS (SELECT 1 FROM my_table WHERE t2.id < 700000 and t2.field1 = t.field1);

然后,您需要在 my_table(field1, id) 上建立索引,并且在 my_table(id, field1) 上建立索引也可能会有所帮助。

关于mysql - 选择并删除具有特定 ID 的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38145223/

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