2013-07-03 32 views
0

我有這兩列基於SQL的列有重複的值選擇行,但責令其明顯

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,但兩者移除重複,但我希望它們以行集合,使得第一拷貝發生然後第二DUPLI的行進行分組美食等等。有什麼建議或幫助實現它?

回答

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