我想显示一些数据,我的要求是重复的值不应该相邻显示。现在表中的数据是这样排列的
ID Name
1 A
2 A
3 B
4 C
5 B
6 B
7 C
8 C
9 C
预期结果-应该在以下顺序
ID Name
1 A
3 B
4 C
2 A
5 B
7 C
6 B
8 C
9 C
这可以使用ROW_NUMBER
窗口函数来完成。
SELECT *, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY ID) AS rn
FROM mytable
ORDER BY rn, Name
,db<的在小提琴
可以将row_number()
直接放在order by
中。我建议:
select t.*
from t
order by row_number() over (partition by name order by id),
name;