0
点赞
收藏
分享

微信扫一扫

收集的又一道有趣的SQL题

独兜曲 2022-08-31 阅读 206


  • 作者:三十而立
  • 时间:2009年10月15日 21:59:51
  • 本文出自 “inthirties(三十而立)​”博客,

 

把次序不对的列找出来


请问 下面的表该如何排序?我有下面的表。次序如下 其中第5个记录和第6条记录次序颠倒了。这个表数据量比较大。 用什么方法可以对这个表中的 b列排序。使其能够按照升序排列。 
a b 
1 #1杆塔 
2 #2杆塔 
3 #3.1杆塔 
4 #3.2杆塔 
5 #5杆塔 
6 #4杆塔 
7 #6杆塔 
8 #7杆塔 
9 #9杆塔 
10 #8杆塔 

现在要做的事情就是把 次序不对的列找出来。 不是排序。比如上列中b列第5,第6列。第9,10次序不对。 现在要把其中的列找出来。 
5 #5杆塔 
6 #4杆塔 
9 #9杆塔 
10 #8杆塔 
就是把这样的列能够找出来。


SQL> with temp as( 

2 select 1 a, '#1杆塔' b from dual union all

3 select 2 a, '#2杆塔' b from dual union all

4 select 3 a, '#3.1杆塔' b from dual union all

5 select 4 a, '#3.2杆塔' b from dual union all

6 select 5 a, '#5杆塔' b from dual union all

7 select 6 a, '#4杆塔' b from dual

8 ) select a, b from (select temp.*, row_number() over(order by a asc) a_ord,r

ow_number() over(order by to_number(substr(b, 2, length(b)-3)) asc) b_ord from t

emp) t where t.a_ord <>t.b_ord;


A B

---------- --------

6 #4杆塔

5 #5杆塔

 




 


  • 如果没有那句“三十而立”,三十岁的男人正可以轻轻松松

 

举报

相关推荐

0 条评论