我有一个包含这两列的表格
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
我需要按不同的位置
排序,但不应删除重复项,最终结果必须类似于
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
分组,但都删除了重复项,但我希望将它们分组为行集,以便第一个副本发生然后第二个重复的行发生等。有什么建议或帮助实现它吗?
最佳答案
您需要枚举 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
关于mysql - sql根据具有重复值的列选择行,但对它们进行明确的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17438355/