PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Използване на колона псевдоним в клаузата where в Postgresql

Борих се по същия проблем и „синтаксисът на mysql е нестандартен“ не е валиден аргумент според мен. PostgreSQL добавя и удобни нестандартни разширения, например "INSERT ... RETURNING ...", за да получите автоматични идентификатори след вмъкване. Освен това повтарянето на големи заявки не е елегантно решение.

Въпреки това намерих изявлението WITH за много полезно (CTE). Той създава някак временен изглед в рамките на заявката, който тогава можете да използвате като обикновена таблица. Не съм сигурен дали съм пренаписал вашето JOIN правилно, но като цяло трябва да работи по следния начин:

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. Вземете името на собственика на DB в PostgreSql

  2. Инсталация на Postgis:геометрия на типа не съществува

  3. Django bulk_create с игнориране на редове, които причиняват IntegrityError?

  4. Инсталирайте PostgreSQL на Ubuntu 20.04

  5. Ruby on Rails:Има ли начин да се изтеглят елементи от базата данни и да се върнат в определен ред?