Запросы были нужны именно для MySQL и PostgreSQL. Но PostgreSQL и MS SQL имеют разное представление о том, как связаны таблицы в UPDATE и FROM. Программист, который писал запрос имел опыт работы с MS SQL, что и стало, по всей видимости, изначальной причиной ошибки.
Если не это, то:
update test
set id=subquery.field+1
from (select at.my,at.precious,at.fields,rtt.test_id
from another_table as at
left join relation_table rtt
on rtt.at_at=at.id) as subquery
where test.id=subquery.test_id
А в чем преимущество использования подзапроса? Если бы это хотя-бы позволяло написать update, который одновременно работает и на PostgreSQL и на MySQL, но нет. Если в обоих СУБД синтаксис позволяет написать более компактно без подзапроса, то зачем писать подзапрос? Чтобы проверить сработает ли оптимизатор и раскроет подзапрос или начнет его материализовывать? Весь мой опыт работы с MySQL говорит о том, что так делать не стоит.
С такими советами
Два момента я уже назвал выше.
Изначально использовался MySQL, проект переводился на PostgreSQL, в переходный период необходимо было поддерживать работу с двумя СУБД.
А в чем преимущество использования подзапроса? Если бы это хотя-бы позволяло написать update, который одновременно работает и на PostgreSQL и на MySQL, но нет. Если в обоих СУБД синтаксис позволяет написать более компактно без подзапроса, то зачем писать подзапрос? Чтобы проверить сработает ли оптимизатор и раскроет подзапрос или начнет его материализовывать? Весь мой опыт работы с MySQL говорит о том, что так делать не стоит.