Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

SQL không nhận ra bí danh cột trong mệnh đề where

Có thể sử dụng bí danh trong danh sách chọn truy vấn để đặt tên khác cho cột. Bạn có thể sử dụng bí danh trong GROUP BY, ORDER BY hoặc HAVINGclauses để tham chiếu đến cột.

SQL chuẩn không cho phép tham chiếu đến bí danh cột trong mệnh đề WHERE. Hạn chế này được áp dụng vì khi mệnh đề WHERE được đánh giá, giá trị cột có thể chưa được xác định.

Vì vậy, truy vấn sau là bất hợp pháp:

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>

Bí danh cột được phép trong:

  • NHÓM THEO
  • ĐẶT HÀNG BỞI

Bạn có thể tham khảo bí danh cột trong mệnh đề WHERE trong các trường hợp sau:

  1. Truy vấn phụ
  2. Biểu thức Bảng Chung (CTE)

Ví dụ:

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. Trong Oracle, có thể CHÈN hoặc CẬP NHẬT một bản ghi thông qua một khung nhìn không?

  2. Làm cách nào để chuyển động các giá trị cho toán tử IN?

  3. Cách tìm bảng nơi thống kê bị khóa

  4. Có một chức năng để tách một chuỗi trong PL / SQL?

  5. CASE so với DECODE