请用SQL完成数据库内表的排序(mysql数据库)

我想在sql中实现排序,原来在库中的表如1,想排成2,规则是下一序找上一序,一个个的往上找。60的上一序是50,以此类推,完成排序。语句麻烦附上,谢谢!

img


with p as (select * from t a where not exists (select * from t b where a.工序=b.下工序) union all select a.* from t a inner join p on a.工序=p.下工序)
select * from p

你的目的是什么?

最简单的方法:(把数据当字符串的)

SELECT * FROM a#表的名字
ORDER BY 
CASE WHEN a='2101' THEN 1      
     WHEN a='30' THEN 2
     WHEN a='20' THEN 3
     WHEN a='40' THEN 4
     WHEN a='50' THEN 5
     WHEN a='60' THEN 6
END

这个是降序排列,不是完全符合你的要求,但明显省时省力的多:

select *,dense_a #你的数据库表名,下同# () over(order by a desc) as rank1
from a

请将所有注释删除后运行

SELECT * from test1
ORDER BY
FIELD(id, 2101, 30, 20,40,50, 60)