Oracle
 sql >> Baza danych >  >> RDS >> Oracle

SQL nie rozpoznaje aliasu kolumny w klauzuli where

Na liście wyboru zapytania można użyć aliasu, aby nadać kolumnie inną nazwę. Możesz użyć aliasu w klauzulach GROUP BY, ORDER BY lub HAVING, aby odwoływać się do kolumny.

Standardowy kod SQL nie zezwala na odwołania do aliasów kolumn w klauzuli WHERE. To ograniczenie jest nakładane, ponieważ podczas oceny klauzuli WHERE wartość kolumny mogła nie zostać jeszcze określona.

Dlatego następujące zapytanie jest niedozwolone:

SQL> SELECT empno AS employee, deptno AS department, sal AS salary
  2  FROM emp
  3  WHERE employee = 7369;
WHERE employee = 7369
      *
ERROR at line 3:
ORA-00904: "EMPLOYEE": invalid identifier


SQL>

Alias ​​kolumny jest dozwolony w:

  • GRUPAJ WG
  • ZAMÓW PRZEZ
  • POSIADAJĄC

Możesz odwołać się do aliasu kolumny w klauzuli WHERE w następujących przypadkach:

  1. Podzapytanie
  2. Wspólne wyrażenie tabeli (CTE)

Na przykład

SQL> SELECT * FROM
  2  (
  3  SELECT empno AS employee, deptno AS department, sal AS salary
  4  FROM emp
  5  )
  6  WHERE employee = 7369;

  EMPLOYEE DEPARTMENT     SALARY
---------- ---------- ----------
      7369         20        800

SQL> WITH DATA AS(
  2  SELECT empno AS employee, deptno AS department, sal AS salary
  3  FROM emp
  4  )
  5  SELECT * FROM DATA
  6  WHERE employee = 7369;

  EMPLOYEE DEPARTMENT     SALARY
---------- ---------- ----------
      7369         20        800

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać aktualną datę w Oracle

  2. Zapytanie o usunięcie Oracle zajmuje zbyt dużo czasu

  3. Wyświetlanie komunikatów okna modalnego w formularzach Oracle za pomocą Show_Alert

  4. Używanie LIKE w klauzuli Oracle IN

  5. Nieistotna różnica planu wykonania z Oracle przy użyciu jdbc Timestamp lub Date