在MySQL中:
让我说我有这张桌子:
id | name | count |
1 | John | |
2 | John | |
3 | John | |
4 | Mary | |
5 | Lewis| |
6 | Lewis| |
7 | Max | |
8 | Max | |
名称已经分组,因此相同的名称会出现在一起。 现在我希望表格是这样的:
id | name | count |
1 | John | 1 |
2 | John | 2 |
3 | John | 3 |
4 | Mary | 1 |
5 | Lewis| 1 |
6 | Lewis| 2 |
7 | Max | 1 |
8 | Max | 2 |
请注意,每当重复使用相同的名称时,它会自动递增count的值。
谢谢!
答案 0 :(得分:1)
您可以使用用户变量。
这样的事情: -
UPDATE somepeople a
INNER JOIN (
SELECT id, name, IF(@PrevName=name, @aCnt := @aCnt + 1, @aCnt := 1) AS sequence, @PrevName:=name
FROM somepeople,
(SELECT @aCnt:=1, @PrevName:='') Sub1
ORDER BY name, id) b
ON a.id = b.id
SET a.count = b.sequence