gpt4 book ai didi

MySQL更新一行的后续重复项

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

我们正在进行一些清理工作,我需要删除意外添加到数据库表中的重复数据。 ID明显不同,但其他字段是一样的。

我可以使用以下查询来选择重复的数据集:

SELECT user_id, start_datetime, count(id) AS dup_count
FROM our_table
WHERE status = 1
GROUP BY user_id, start_datetime
HAVING count(id) > 1;

我需要做的是创建一个查询,将每个重复的 ID 与第一个分开,并使用它来将状态更新为 0。

我不确定我是否可以通过一个查询来完成此操作,但我认为步骤如下:

  1. 运行与上面类似的查询
  2. 提取重复集的所有 ID
  3. 忽略列表中的第一条记录,因为我们不想更改正确添加的第一条记录
  4. 对剩余的 ID 集运行更新

我在这里运气不好吗?还是有可能做到?

非常感谢!

最佳答案

您可以通过更新/加入来完成此操作:

UPDATE our_table ot JOIN
(SELECT user_id, start_datetime, count(id) AS dup_count, min(id) as minid
FROM our_table
WHERE status = 1
GROUP BY user_id, start_datetime
HAVING count(id) > 1
) dups
ON ot.user_id = dups.user_id and
ot.start_datetime = dups.start_datetime and
ot.id > dups.minid
SET ot.status = 0;

关于MySQL更新一行的后续重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27158669/

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