sql >> Databasteknik >  >> RDS >> Oracle

SQL känner inte igen kolumnaliaset i where-satsen

Ett alias kan användas i en frågevallista för att ge en kolumn ett annat namn. Du kan använda aliaset i GROUP BY, ORDER BY eller HAVING-satser för att referera till kolumnen.

Standard SQL tillåter inte referenser till kolumnalias i en WHERE-sats. Denna begränsning införs eftersom när WHERE-satsen utvärderas kanske kolumnvärdet inte har fastställts ännu.

Så följande fråga är olaglig:

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>

Kolumnaliaset är tillåtet i:

  • GRUPPER EFTER
  • BESTÄLL EFTER
  • HA

Du kan referera till kolumnaliaset i WHERE-satsen i följande fall:

  1. Underfråga
  2. Common Table Expression (CTE)

Till exempel,

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. SQL-serverlogg, leverans och katastrofåterställning, installation och konfiguration -4

  2. Hur man konverterar tidszonen i MySQL

  3. Problem med att skapa främmande nyckel i Oracle

  4. PostgreSQL date() med tidszon