MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
          別名為什么不能做條件,ORA-00904: "CCC": 標識符無效。

          請教:
          SQL> select jno,jname,nval,val,val-nval ccc from jj where ccc > 1;
          出現錯誤:
          ORA-00904: "CCC": 標識符無效

          為什么啊,查資料select的用法里面沒用查到。
          SQL> select jno,jname,nval,val,val-nval ccc from jj where (val-nval)> 1;
          這樣就可以的,我還想按 ccc 排序,也不行。
          哪位老大指點一下,多謝!!

          where子句中只能直接使用欄位或者常量,而不能使用欄位的別名,除非這個別名來自子查詢之中,如:select .... from (select col1 ccc from table) where ccc > 1
          而order by 則可以直接使用別名,如select col1 ccc from table order by ccc
          我想,這和sql 的執行順序是有關的,where中的部分先執行 -> 如果有group by,接著執行group by -> select中的函數計算、別名指定再運行 -> 最后order by
          因此,字段、表達式的別名在where子句和group by子句都是不能使用的,而在order by中不僅可以使用別名,甚至可以直接使用欄位的下標來進行排序,如:order by 1 desc,2 asc 呵呵


          評論

          # re: 別名為什么不能做條件,ORA-00904: "CCC": 標識符無效  回復  更多評論   

          2007-10-13 16:19 by liuge
          qingchu l
          主站蜘蛛池模板: 北京市| 林周县| 石狮市| 鞍山市| 张家港市| 嘉定区| 新巴尔虎左旗| 璧山县| 岫岩| 乡宁县| 鄂尔多斯市| 辰溪县| 紫阳县| 集安市| 呼伦贝尔市| 微山县| 万安县| 阳城县| 微博| 嵩明县| 绵竹市| 甘南县| 黑龙江省| 阳原县| 遵义市| 太仆寺旗| 赤壁市| 定远县| 会理县| 常熟市| 屯昌县| 万全县| 渑池县| 舟曲县| 竹北市| 开鲁县| 安吉县| 法库县| 昔阳县| 广东省| 聊城市|