sql >> Database teknologi >  >> RDS >> PostgreSQL

Brug af en Alias-kolonne i where-sætningen i Postgresql

Jeg kæmpede med det samme problem, og "mysql-syntaks er ikke-standard" er ikke et gyldigt argument efter min mening. PostgreSQL tilføjer også praktiske ikke-standardudvidelser, for eksempel "INSERT ... RETURNING ..." for at få auto-id'er efter indsættelser. Gentagelse af store forespørgsler er heller ikke en elegant løsning.

Men jeg fandt WITH-erklæringen meget nyttig (CTE'er). Det opretter på en måde en midlertidig visning i forespørgslen, som du kan bruge som en sædvanlig tabel derefter. Jeg er ikke sikker på, om jeg har omskrevet dit JOIN korrekt, men generelt burde det fungere sådan her:

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. Opdater SQL med fortløbende nummerering

  2. Oracle UTL_HTTP Post Multipart/Form-Data (JSON &ZIP) Eksempel

  3. Returner en liste over fremmede nøgler i SQLite

  4. Sådan rettes "Vælglisten for INSERT-sætningen indeholder færre elementer end indsætningslisten"