0

これらの2つの列を持つテーブルがあります

name  |  position
_______________
bob   |   1
rob   |   1
sam   |   1
tom   |   2
shyam |   2
ram   |   2
shah  |   3
sara  |   3
shiv  |   3
rogue |   4
logan |   4
xavier|   4

個別に注文する必要がありますpositionが、重複を削除しないでください。最終結果は次のようになります

    name  | position
    _______________
    bob   |   1
    tom   |   2
    shah  |   3
    rogue |   4
    rob   |   1
    shyam |   2
    sara  |   3
    logan |   4
    sam   |   1
    ram   |   2
    shiv  |   3
    xavier|   4

個別positionとグループ化の両方を試しましpositionたが、どちらも重複を削除しますが、最初のコピーが発生し、次に2番目の重複の行が発生するように行のセットとしてグループ化する必要があります。それを達成するための提案やヘルプはありますか?

4

1 に答える 1

1

の各値内の行を列挙する必要がありますposition。次に、これを注文に使用できます。

select t.name, t.position
from (select t.*, if(@prev = position, @rn := @rn + 1, 1) as rn,
             @prev := position
      from t cross join
           (select @rn := 0, @prev := -1)
      order by position
     ) t
order by rn
于 2013-07-03T01:33:23.493 に答える