zoukankan      html  css  js  c++  java
  • Oracle语句优先级

    SQL> SELECT SAL SALARY FROM EMP WHERE SALARY<2500;
    Warning: connection was lost and re-established

    SELECT SAL SALARY FROM EMP WHERE SALARY<2500

    ORA-00904: "SALARY": 标识符无效

    Oracle中,在WHERE子句中引用列别名会出错,这是为什么呢?
    请看SELECT 语句的执行顺序:

    1. from语句

    2. where语句(结合条件)

    3. start with语句

    4. connect by语句

    5. where语句

    6. group by语句

    7. having语句

    8. model语句

    9. select语句

    10. union、minus、intersect等集合演算演算

    11. order by语句

    SELECT 语句在WHERE语句后面才执行,而列的别名是在SELECT 时才生成的,故在WHERE子句中根本看不到列的别名,自然无法引用列的别名了。

    如果想用列的别名就要这样:
    SELECT SALARY FROM (SELECT SAL SALARY FROM EMP) WHERE SALARY<2500;

  • 相关阅读:
    函数
    A × B problem
    求n的阶乘
    自己构建一个vector函数
    int与string的互相转化
    列一列(斐波那契数列)
    找一找
    c++大数计算模板
    JSON--js中 json字符串转对象、对象转字符串
    JSON
  • 原文地址:https://www.cnblogs.com/lurenjia1994/p/7111124.html
Copyright © 2011-2022 走看看