sql >> Database >  >> RDS >> PostgreSQL

Een Alias-kolom gebruiken in de waar-clausule in Postgresql

Ik worstelde met hetzelfde probleem en "mysql-syntaxis is niet-standaard" is naar mijn mening geen geldig argument. PostgreSQL voegt ook handige niet-standaard extensies toe, bijvoorbeeld "INSERT ... RETURNING ..." om automatische id's te krijgen na invoegingen. Het herhalen van grote zoekopdrachten is ook geen elegante oplossing.

Ik vond de WITH-verklaring echter erg nuttig (CTE's). Het creëert een soort tijdelijke weergave binnen de query die u dan als een gewone tabel kunt gebruiken. Ik weet niet zeker of ik je JOIN correct heb herschreven, maar over het algemeen zou het als volgt moeten werken:

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. Wat zijn macro's en hoe gebruik ik ze?

  2. C# verbinden met Oracle

  3. Dubbele rijen verwijderen uit tabel in Oracle

  4. Reset root-wachtwoord van MySQL