2

次のように、1列のテーブルがあります。

name
-------
Michael
Michael
Michael
Michael
John
John
John
Alex
Alex

私はそれらをランク付けして与える必要があります:

name    | rank
--------|------
Michael |1
Michael |2
Michael |3
Michael |4
John    |1
John    |2
John    |3
Alex    |1
Alex    |2

どうすればそれを実行できますか?

4

2 に答える 2

5

これを直接行うことができるmysqlには何もありませんが、次のようにハッキングできます。

SET @prev := null;

SET @cnt := 1;

SELECT name, IF(@prev <> name, @cnt := 1, @cnt := @cnt + 1) AS rank, @prev := name
FROM yourtable
ORDER BY name

この種のことは、同じ基本的なロジックを使用して、クライアント アプリで簡単に実行できます。

于 2013-08-21T15:23:13.003 に答える