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

Sử dụng cột Bí danh trong mệnh đề where trong Postgresql

Tôi đã đấu tranh về cùng một vấn đề và "cú pháp mysql không chuẩn" không phải là một đối số hợp lệ theo quan điểm của tôi. PostgreSQL cũng bổ sung các phần mở rộng phi tiêu chuẩn tiện dụng, chẳng hạn như "CHÈN ... RETURNING ..." để nhận id tự động sau khi chèn. Ngoài ra, lặp lại các truy vấn lớn không phải là một giải pháp tốt.

Tuy nhiên, tôi thấy câu lệnh WITH rất hữu ích (của CTE). Nó tạo ra một dạng xem tạm thời trong truy vấn mà bạn có thể sử dụng như một bảng thông thường sau đó. Tôi không chắc liệu tôi đã viết lại đúng cách JOIN của bạn hay chưa, nhưng nói chung thì nó sẽ hoạt động như thế này:

WITH jobs_refined AS (
    SELECT
        jobs.*,
        (SELECT CASE WHEN lead_informations.state IS NOT NULL THEN lead_informations.state ELSE 'NEW' END) AS lead_state
    FROM jobs
    LEFT JOIN lead_informations
        ON lead_informations.job_id = jobs.id
        AND lead_informations.mechanic_id = 3
)
SELECT *
FROM jobs_refined
WHERE lead_state = 'NEW'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao tốt nhất nên lưu trữ số điện thoại dưới dạng chuỗi so với số nguyên?

  2. Làm cách nào để bạn in kết quả của một truy vấn PostgreSQL ở định dạng CSV hoặc TSV từ dòng lệnh?

  3. Cách justify_interval () hoạt động trong PostgreSQL

  4. Làm cách nào để kết hợp cả ngày với trường ngày giờ?

  5. Chỉ mục thích hợp để truy vấn cấu trúc trong mảng trong Postgres jsonb là gì?