PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Używanie kolumny Alias ​​w klauzuli WHERE w Postgresql

Zmagałem się z tym samym problemem, a „składnia mysql jest niestandardowa” nie jest moim zdaniem słusznym argumentem. PostgreSQL dodaje również przydatne niestandardowe rozszerzenia, na przykład "INSERT ... RETURNING ...", aby uzyskać automatyczne identyfikatory po wstawieniu. Ponadto powtarzanie dużych zapytań nie jest eleganckim rozwiązaniem.

Jednak uważam, że instrukcja WITH jest bardzo pomocna (CTE). Tworzy to w pewnym sensie tymczasowy widok w zapytaniu, którego można wtedy używać jak zwykłej tabeli. Nie jestem pewien, czy poprawnie przepisałem twoje JOIN, ale ogólnie powinno działać tak:

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. Jak mogę zmienić istniejącą kolumnę jako Tożsamość w PostgreSQL 11.1?

  2. Jak uzyskać aktualną datę i godzinę (bez strefy czasowej) w PostgreSQL?

  3. Połączenie Orbeon Forms Postgres DB

  4. Uruchamiaj zapytania PostgreSQL z wiersza poleceń

  5. ZAMÓWIENIE PRZEZ Alias ​​nie działa