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'