私は同じ問題に苦労しました、そして「mysql構文は非標準です」は私の意見では有効な議論ではありません。 PostgreSQLは、「INSERT ... RETURNING ...」などの便利な非標準拡張機能も追加して、挿入後に自動IDを取得します。また、大規模なクエリを繰り返すことは、洗練された解決策ではありません。
ただし、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'