MySQL-使用增量连接将重复值转换为唯一值
就在之前,我发布了一个关于 现在我将扩展这个问题,例如:MySQL-使用增量连接将重复值转换为唯一值,mysql,Mysql,就在之前,我发布了一个关于 现在我将扩展这个问题,例如: +------+------+------+ | id | data | num | +------+------+------+ | 1 | a | | | 2 | a | | | 3 | a | | | 4 | b | | | 5 | b | | | 6 | c | | | 7 | d
+------+------+------+
| id | data | num |
+------+------+------+
| 1 | a | |
| 2 | a | |
| 3 | a | |
| 4 | b | |
| 5 | b | |
| 6 | c | |
| 7 | d | |
| 8 | a | |
| 9 | b | |
+------+------+------+
可更新为:
+------+------+------+
| id | data | num |
+------+------+------+
| 1 | a | a1 |
| 2 | a | a2 |
| 3 | a | a3 |
| 4 | b | b1 |
| 5 | b | b2 |
| 6 | c | c1 |
| 7 | d | d1 |
| 8 | a | a4 |
| 9 | b | b3 |
+------+------+------+
无论如何,我要向你深深鞠躬 看起来您只是想将这些值放在一起:
select data, group_row_number,
concat(data, cast(group_row_number as char)) as num,
overall_row_num
from
(
select data,
@num := if(@data = `data`, @num + 1, 1) as group_row_number,
@data := `data` as dummy, overall_row_num
from
(
select data, @rn:=@rn+1 overall_row_num
from yourtable, (SELECT @rn:=0) r
) x
order by data, overall_row_num
) x
order by overall_row_num
请参见
再次使用Thks@bluefeet 是的,但我还想通过将此select的ID与现有ID关联来更新我的表格。@kairos您的表格上是否有您显示的
ID
字段?是的。正是我在上面展示的。桌子上有一个IDI,我总是忘记concat。很好……这不是问题。你为什么发这个帖子而不编辑你的第一个问题?
UPDATE mytable
SET num = ( SELECT num FROM
(
select id,
concat(data, cast(group_row_number as char)) as num
from
(
select id, data,
@num := if(@data = `data`, @num + 1, 1) as group_row_number,
@data := `data` as dummy
from
(
select id, data
from mytable, (SELECT @rn:=0) r
) x
order by data, id
) x order by id
) tempSort
WHERE mytable.ID = tempSort.ID );