MySql按列分组并为其分配唯一的group_id

时间:2017-11-03 06:29:04

标签: mysql database datagrip

基本上,有一个从db中删除重复项的抽象任务,它通过它与其他几个表的id链接... 我需要为表中的每个重复行分配一个唯一的group_id作为现有行的max(id)。请帮忙

我的问题在图片中 https://i.stack.imgur.com/CVYG1.png

1 个答案:

答案 0 :(得分:0)

您可以先对实体进行分组(以查找组ID),然后更新group_id个实体。

示例:

UPDATE `t`,
    (SELECT `name`, `surname`, MAX(`id`) AS `group_id` FROM `t`
     WHERE 1 GROUP BY CONCAT(`name`, `surname`)) AS `t1`
SET `t`.`group_id` = `t1`.`group_id`
WHERE `t`.`name` = `t1`.`name` AND `t`.`surname` = `t1`.`surname`