select * from (select t.*, t.ID || t.PAERNT_ID sort from table t) order by sort
哥,好像有点问题 用您这条sql语句查出的结果是这样的:
@一个点的未来: 写反了
select * from (select t.*, t.PAERNT_ID || t.ID sort from table t) order by sort
@刘宏玺: 额 好像还不对 是我搞错了吗? 结果还是这样:
@一个点的未来: 你给我截这个图我理解不了啊错在哪里呢?我估计是文本排序的问题
select * from (select t.*, to_number(t.PAERNT_ID || '.' || t.ID) sort from table t) order by sort
@刘宏玺: 哥是这样的 可能我的题没有说明白 真正的数据不 test1,test2……这样的 我题目中那个截图是我给这个问题随便写的测试数据 也就是说不能根据文字进行排序 sorry啊 题没说清
@一个点的未来: 新写的sql测试了没?我估计没有问题了
@刘宏玺: 这是新写的sql语句测试结果:
@一个点的未来: 你的id最大有几位?
@刘宏玺: 这个不确定 因为这个数据用户是可以添加的
@一个点的未来:
select * from (select t.*, to_number(t.PAERNT_ID || '.' || lpad(t.ID,10,'0')) sort from table t) order by sort
@刘宏玺: 这是这条语句的效果:
@一个点的未来: 你的id是文本类型的?
@一个点的未来: select * from (select t.*, to_number(t.PAERNT_ID || '.' || lpad(to_number(t.ID),10,'0')) sort from table t) order by sort
@刘宏玺: id 是 INTEGER 类型的 我要结果是以这种形式展示:
@一个点的未来: 之前方向搞错了,重来
select * from (select t.*, to_number(case when PAERNT_ID = 0 then t.ID || '.' || t.PAERNT_ID else t.ID end) sort from table t) order by sort
@刘宏玺:报错了:
@一个点的未来:
select * from (select t.*, case when PAERNT_ID = 0 then to_number(t.ID || '.' || t.PAERNT_ID) else t.ID end sort from table t) order by sort
@刘宏玺: 好像是没有反应:
@一个点的未来: 你给我看下PAERNT_ID有值的数据
@刘宏玺:
这里面 最后两条就有值
@一个点的未来: 又写反了
select * from (select t.*, case when PAERNT_ID != 0 then to_number(t.PAERNT_ID || '.' || t.ID) else t.ID end sort from table t) order by sort
@刘宏玺: 大神 非常感谢 出来了
非常感谢
真正的大神啊
(select * from xxx where id = 1) union (select * from xxx where id = 2) union (select * from xxx where id = 4) union (select * from xxx where id = 3)
或加个sort字段
哦哦 没用过sort字段 我去查查
我的数据不止这4条 这是我写的一个测试数据 这个数据至少几百条 用sort也可以吗
@一个点的未来: 是自己再加一个sort字段,不是SQL自带的
@一个点的未来: 我有点怀疑你没理解产品的需求
@编程点滴: 先不考虑产品需求 现在就考虑怎么得到这个结果
问题解决了 谢谢
不是很明白的你的意思?
你要的数据1 2 4 3没有规则可言,先清除的表达你的需求!
parent_id和id是有关系的:
@一个点的未来: select id,contat(parent_id,id) seq from table order by seq
注意下 parent_id 为空的时候,联合效果是:null 1 ---- 1 而不是 null1,如果搞不定,可以将null替换为""
@半杯不醉: parent_id 为空的时候是0 默认是0
这个问题解决了 谢谢 非常感谢