gpt4 book ai didi

mysql - 查找两列(或更多列)上的重复条目并删除最近的条目

转载 作者:行者123 更新时间:2023-11-29 07:45:37 25 4
gpt4 key购买 nike

我犯了一个大错误。由于某种原因,我忘记在正在编辑条目的表上应用唯一索引。这意味着我的表现在包含许多重复项。

我能做的最好的事情就是选择重复项并删除除 ID 最大的项之外的所有项。

表结构如下所示:

My table structure

inzerat 条目代表文章 ID,lang 代表描述语言。显然,每一篇文章和每一种语言都只有一个文本。但我现在甚至无法创建索引:

#1062 - Duplicate entry '33-NULL' for key 'Inzerat'

NULL 结果一定是某种无意义的内容 - 所有 lang 值都包含 csenru.

image description

无论如何,我需要的是删除每个重复组的除最新条目之外的所有条目id 最大的条目被认为是最新的,不应被删除。

我什至未能将实际的重复条目作为列表获取:

SELECT *, COUNT(*) c FROM inzerat_popis GROUP BY inzerat,lang HAVING c > 1
ORDER BY `inzerat_popis`.`inzerat` ASC

image description

条目被分组,隐藏各个 id

请尝试尽可能笼统地回答。 StackOverflow 上已经有关于此主题的问题和答案,但所有问题和答案都如此本地化,以至于我不知道如何在我的案例中使用它们。

最佳答案

您可以使用 join 以及要保留的 ID 来执行删除:

delete p
from inzerat_popis p left join
(select inzerat, lang, max(id) as maxid
from inzerat_popis p
group by inzerat, lang
) il
on p.id = il.maxid
where il.maxid is null;

我建议运行等效的 select 语句以确保它达到了预期的效果。要查看正在删除的内容,请使用:

    select p.*
from inzerat_popis p left join
(select inzerat, lang, max(id) as maxid
from inzerat_popis p
group by inzerat, lang
) il
on p.id = il.maxid
where il.maxid is null

关于mysql - 查找两列(或更多列)上的重复条目并删除最近的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27895029/

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