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