sql >> Databasteknik >  >> RDS >> PostgreSQL

Använda en Alias-kolumn i where-satsen i Postgresql

Jag kämpade med samma fråga och "mysql-syntax är icke-standard" är inte ett giltigt argument enligt min mening. PostgreSQL lägger också till praktiska icke-standardiserade tillägg, till exempel "INSERT ... RETURNING ..." för att få auto-ID efter infogning. Att upprepa stora frågor är inte heller en elegant lösning.

Däremot tyckte jag att WITH-uttalandet var mycket användbart (CTE:s). Det skapar liksom en tillfällig vy i frågan som du kan använda som en vanlig tabell då. Jag är inte säker på om jag har skrivit om din JOIN korrekt, men i allmänhet borde det fungera så här:

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. mysql pivotfrågeresultat med GROUP BY

  2. mysqldump bästa praxis:Del 1 – MySQL-förutsättningar

  3. node.js async/await med MySQL

  4. Parser för Oracle SQL