gpt4 book ai didi

mysql - 更新MYSQL中的重复行以进行逻辑删除

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

我看过其他一些关于删除/更新重复行的帖子,但我对如何正确地将其应用于我的特定困境感到有点困惑。

希望有人能插入我朝正确的方向前进。

我有一个表,上面有一些重复的行,并且希望通过将 isdeleted 列设置为 1 来从逻辑上删除每个用户的这些行。

我的表有一个名为 Id 的主键,它是一个无符号的 bigint,并且它有一个名为 cid 的列,它代表另一个重复的 id。 cid 对于不同的用户来说不是唯一的,但对于特定的用户来说应该是唯一的。

例如,您可以在我的表格中看到这一点:

id | cid | userid | is_deleted
1 | 1 | 100 | 0
2 | 2 | 101 | 0
3 | 1 | 102 | 0
4 | 1 | 100 | 0
5 | 2 | 101 | 0

因此,在本例中,用户 #100 在记录 #1 和记录 #4 上有两个相同的 CID。同样,用户 #101 有两个相同的 CID - 记录 #2 和记录 #5

我想做的只是获取给定用户的重复 CID 并将 is_deleted 设置为 1,而不是清除实际行。我想将一条记录保留为 is_deleted = 0,这样就保留了一些内容。

所以我希望的输出是:

id | cid | userid | is_deleted
1 | 1 | 100 | 0
2 | 2 | 101 | 0
3 | 1 | 102 | 0
4 | 1 | 100 | 1
5 | 2 | 101 | 1

我可以用代码来做到这一点,但它会相当复杂,而且我已经看到了一些对纯 SQL 语句的惊人响应;有人可以提供一些建议或提供解决方案吗?

非常感谢!

最佳答案

您可以使用以下查询来更新 N 个重复条目中的 1 行,

Update table t
inner join
(select id from table group by userid,cid having count(1)>1) t1
on t1.id = t.id
set t.is_deleted=1;

关于mysql - 更新MYSQL中的重复行以进行逻辑删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47171365/

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