MySQL按索引排序,然后一起复制

MySQL按索引排序,然后一起复制,mysql,mariadb,sql-order-by,Mysql,Mariadb,Sql Order By,我希望按ID对行进行排序,然后按顺序显示重复项 例如: id color 1 red 2 green 3 yellow 4 green 5 green 6 red 预期: id color 1 red 6 red 2 green 4 green 5 green 3 yellow 如果您使用的是MySql 8.0+,则可以使用MIN()窗口函数: select t.id, t.color

我希望按ID对行进行排序,然后按顺序显示重复项

例如:

id    color
1     red
2     green
3     yellow
4     green
5     green
6     red
预期:

id    color
1     red
6     red
2     green
4     green
5     green
3     yellow

如果您使用的是MySql 8.0+,则可以使用MIN()窗口函数:

select t.id, t.color
from (
  select *,
    min(id) over (partition by color) minid
  from tablename
) t
order by t.minid, id
对于以前的版本:

select t.* from tablename t
order by (select min(id) from tablename where color = t.color), id;
请参阅。
结果:


一个简单的
按颜色排序,id
,虽然它会先变成绿色,然后变成红色,然后变成黄色。那有关系吗?
| id  | color  |
| --- | ------ |
| 1   | red    |
| 6   | red    |
| 2   | green  |
| 4   | green  |
| 5   | green  |
| 3   | yellow |