PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menggunakan kolom Alias ​​​​di klausa where di Postgresql

Saya berjuang pada masalah yang sama dan "sintaks mysql tidak standar" menurut saya bukan argumen yang valid. PostgreSQL menambahkan ekstensi non-standar yang berguna juga, misalnya "INSERT ... RETURNING ..." untuk mendapatkan id otomatis setelah sisipan. Juga, mengulangi kueri besar bukanlah solusi yang elegan.

Namun, saya menemukan pernyataan WITH sangat membantu (CTE). Ini semacam menciptakan tampilan sementara dalam kueri yang dapat Anda gunakan seperti tabel biasa. Saya tidak yakin apakah saya telah menulis ulang GABUNG Anda dengan benar, tetapi secara umum seharusnya bekerja seperti ini:

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. PostgreSQL:Perbandingan string yang tidak peka huruf besar-kecil

  2. SQLAlchemy atau psycopg2?

  3. IN Klausa dengan NULL atau IS NULL

  4. Jelaskan JOIN vs. LEFT JOIN dan WHERE kondisi saran kinerja secara lebih rinci

  5. Tetapkan nilai dalam ketergantungan bagan Helm