0

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 の値が自動的にインクリメントされることに注意してください。

ありがとう!

4

1 に答える 1

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
于 2013-05-09T10:42:35.520 に答える