sql >> Databáze >  >> RDS >> PostgreSQL

Použití aliasového sloupce v klauzuli where v Postgresql

Potýkal jsem se se stejným problémem a „syntaxe mysql je nestandardní“ podle mého názoru není platný argument. PostgreSQL také přidává šikovná nestandardní rozšíření, například "INSERT ... RETURNING ..." pro získání auto id po vložení. Také opakování velkých dotazů není elegantní řešení.

Zjistil jsem však, že příkaz WITH je velmi užitečný (CTE). Vytváří dočasný pohled v rámci dotazu, který pak můžete použít jako obvyklou tabulku. Nejsem si jistý, jestli jsem váš JOIN přepsal správně, ale obecně by to mělo fungovat takto:

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. Naučte se základní analýzu dat s funkcemi okna SQL

  2. Vylepšujeme datový model online pracovního portálu

  3. Funkce USER v Oracle

  4. Upozornění:mysqli_connect():(HY000/1045):Přístup odepřen pro uživatele 'username'@'localhost' (pomocí hesla:ANO)