2013-07-03 13 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