gpt4 book ai didi

MySQL 根据匹配和不匹配条件更新重复 ID 全部在一张表中

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

希望我能解释清楚。我有一个表,其中包含组内人员的唯一 ID。 ID 是使用名字的前 3 个字母和出生日期生成的。通常,对于较小的团体(少于 500 人),这种方法效果很好。然而,在大群体中,我们确实遇到了一些重复的情况。然后我们只需将 -1、-2、-3 等附加到任何重复的 ID 上。例如:

ID    GROUP          UID            FIRST_NAME
1 123456 ALE19900123 ALEXIS
2 123456 ALE19900123 ALEXANDER
3 123456 ALE19900123 ALEJANDRO
4 789789 ALE19900123 ALEX

我想要做的是,对于 ID 2 和 3,分别将 -1 和 -2 附加到其 UID 字段,以便 1,2 和 3 现在是唯一的(GROUP + UID)。 ID 4 将被忽略,因为 GROUP 不同

我从这样的事情开始:

UPDATE table A
JOIN table B
ON B.GROUP = A.GROUP
AND B.UID = A.UID
AND B.FIRST_NAME <> A.FIRST_NAME
AND B.ID < A.ID
SET A.duplicate_record = 1;

这应该为 ID 2 和 3 设置重复记录字段 = 1。但是我仍然需要向这些 UID 附加 -1、-2、-3 等,但我不知道该怎么做。也许我应该设置重复记录的计数,而不是仅仅为重复设置 flag = 1?

最佳答案

如果group, UID元组是唯一的(而且应该是),为什么不插入忽略第一个(不附加任何值),检查有多少行受 SELECT ROW_COUNT(); 影响,如果为零,则附加 -1?如果将其放在 for 循环中(伪代码):

while i < 1000 do
insert ignore into people (group, uid, first_name) values (123456, concat(their_uid, "-", i), first name);
if ((select row_count();) == 1):
break;
i=i+1;
end while;

关于MySQL 根据匹配和不匹配条件更新重复 ID 全部在一张表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45925082/

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