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

PostgreSQL không chấp nhận bí danh cột trong mệnh đề WHERE

Bạn hỏi hai câu hỏi:
1.

Tại sao tôi không thể tham chiếu đến bí danh chi phí SELECT tại mệnh đề WHERE?

2.

Nhưng tại sao phải đặt hàng theo chi phí desc; được cho phép?


Sách hướng dẫn có câu trả lời cho cả hai ở đây:

Tên của cột đầu ra có thể được sử dụng để tham chiếu đến giá trị của cột trong ORDER BYGROUP BY các mệnh đề, nhưng không có trong WHERE hoặc HAVING điều khoản; ở đó bạn phải viết ra biểu thức để thay thế.

Nó được xác định bởi tiêu chuẩn SQL và lý do là chuỗi sự kiện trong SELECT truy vấn. Tại thời điểm WHERE các mệnh đề được áp dụng, các cột đầu ra trong SELECT danh sách vẫn chưa được tính toán. Nhưng khi nói đến ORDER BY , các cột đầu ra luôn có sẵn.

Vì vậy, mặc dù điều này là bất tiện và khó hiểu lúc đầu, nhưng nó vẫn có lý.

Có liên quan:

  • Điều kiện đếm ở đâu của PostgreSQL
  • Cách tốt nhất để tính kết quả trước khi LIMIT được áp dụng



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách Atan2d () hoạt động trong PostgreSQL

  2. Một truy vấn PostgreSQL với 'ANY' không hoạt động

  3. Sự khác biệt giữa dấu nháy đơn và dấu nháy kép trong PostgreSQL là gì?

  4. Phiên bản hạt nhân PostgreSQL so với Linux

  5. Cách tính tăng trưởng hàng tháng trong PostgreSQL