Я боролся за ту же проблему, и "синтаксис mysql нестандартен", на мой взгляд, не является допустимым аргументом. PostgreSQL также добавляет удобные нестандартные расширения, например, «INSERT ... RETURNING ...» для получения автоматических идентификаторов после вставок. Кроме того, повторение больших запросов не является элегантным решением.
Однако, я нашел оператор WITH очень полезным. Это своего рода создает временное представление в запросе, которое вы можете использовать как обычную таблицу. Я не уверен, правильно ли я переписал ваш 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'