sql >> Databáze >  >> RDS >> Oracle

SQL nerozpozná alias sloupce v klauzuli where

Alias ​​lze použít v seznamu pro výběr dotazu a dát sloupci jiný název. K odkazování na sloupec můžete použít alias v klauzulích GROUP BY, ORDER BY nebo HAVING.

Standardní SQL nepovoluje odkazy na aliasy sloupců v klauzuli WHERE. Toto omezení je uplatněno, protože když je vyhodnocena klauzule WHERE, hodnota sloupce možná ještě nebyla určena.

Následující dotaz je tedy nezákonný:

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 ​​sloupce je povolen v:

  • GROUP BY
  • OBJEDNAT PODLE
  • MÍT

Na alias sloupce v klauzuli WHERE se můžete odkázat v následujících případech:

  1. Dílčí dotaz
  2. Common Table Expression (CTE)

Například,

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. To-do list aplikace využívající PHP a MySQL databázi

  2. Snadné nastavení webového serveru pomocí XAMPP

  3. MySQL CAST – Jak psát Cast v MySQL

  4. Java JDBC ignoruje setFetchSize?