Борих се по същия проблем и „синтаксисът на 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'