Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-使用增量连接将重复值转换为唯一值_Mysql - Fatal编程技术网

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 );