如:
select a , b from table order by decode(a , null , 0 ,1);该SQL可以运行且无误,但问题是:
按SELECT的执行顺序,decode(a , null , 0 ,1)表达式完成计算,同时完成筛选获得a,b列,
最后执行order by ,按0或者1来排序。但筛选出来的并无0与1对应的一列,这样排序为什么会正确?
select a , b from table order by decode(a , null , 0 ,1);该SQL可以运行且无误,但问题是:
按SELECT的执行顺序,decode(a , null , 0 ,1)表达式完成计算,同时完成筛选获得a,b列,
最后执行order by ,按0或者1来排序。但筛选出来的并无0与1对应的一列,这样排序为什么会正确?
解决方案 »
- T-SQL转PL-SQL,输出结果也要类似
- ora-06511 游标已经打开(有代码,请高手指点)急!!谢谢
- 如何获得Oracle的表结构?
- Oracle初级知识知道的麻烦给说下
- 请教这样的集合如何查询?
- 定义了long型变量来存放动态SQL语句,为何当该变量长度达到32768时就出错,不是说long型变量可存储2GB个字节吗?
- 救救超菜鸟---对一备份文件如何下手啊?
- 谁能帮我试试这本电子书能不能打开?谢谢。。。。
- 如何修改Oracle中的显示乱码问题
- linux下BIP安装完,重启oc4j时,没有提示输密码 而且putty一关闭 bip server就打不开了,求解决
- 在线等这个多表关联查询问题,急啊急
- 安装 oim的时候 报了 个错误:Following Error occured during schema creation connected加载数据库脚本时出错 谢谢大虾拉!
select a,decode(a,null,0,1) v_dec,b from table order by decode(a,null,0,1); 其实你的结果是根据v_dec列进行排序的,所以显示正确.
你并没有把v_dec这列select出来啊,所以当然没有0和1.
我晕,我的意思SQL就是要这样写出来才对。按你的意思来说的话,那SELECT A , B FROM TABLE ORDER BY C 也正确了?
SELECT A , B FROM TABLE ORDER BY A|B才对;
而SELECT A , B FROM TABLE ORDER BY C 则是错误的
这个有点深了哦.
SELECT A , B FROM TABLE ORDER BY C is right A:
ID NAME C
----- ------- ----
1 AAA 3
2 BBB 2
3 CCC 1
select ID,NAME from A order by C asc
ID NAME
----- -------
3 CCC
2 BBB
1 AAA
select ID,NAME from A order by C desc
ID NAME
----- -------
1 AAA
2 BBB
3 CCC
那说明你的理解错了,select后罗列出来的和order by后面罗列出来的没有任何关系...
这么说吧,表T有a,b,c,d,4个字段,对于下面这句
SELECT A , B FROM T ORDER BY C
oracle把所有数据(每一列)都读出来,
先按c排好序,再把你要的a,b列显示出来给你看.