gpt4 book ai didi

mysql - 用其他字段唯一值的序号更新表中的字段

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

我有一个表“my_table”,其中包含两个字段:“name”和“name_id”。字段“name_id”是一个数字。

name| name_id
----+---------
foo | NULL
foo | NULL
bar | NULL
bar | NULL
bar | NULL

我需要使用“name”字段的唯一值的序列号来更新“name_id”字段,因此结果表如下所示:

name| name_id
----+---------
foo | 1
foo | 1
bar | 2
bar | 2
bar | 2

我为MySQL写了一个小程序:

SET @counter := 0;
UPDATE
(
SELECT `name`, (@counter := @counter + 1) AS `newId`
FROM
(
SELECT DISTINCT `name`
FROM `my_table`
ORDER BY `name`
) AS `temp`
) AS `src` RIGHT JOIN `my_table` AS `dest` ON `dest`.`name` = `src`.`name`
SET`dest`.`name_id` = `src`.`newId`;

这个解决方案正确吗?有更好的解决方案来完成这项任务吗?

最佳答案

在MySQL中,您可以使用变量:

set @rn := 0;
set @n := '';

update my_table
set name_id = (@rn := if(@n = name, @rn,
if(@n := name, @rn + 1, @rn + 1)
)
)
order by name;

关于mysql - 用其他字段唯一值的序号更新表中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54188613/

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