Search
Write a publication
Pull to refresh
1
0
Send message

С такими советами

Он написал по аналогии для PostgreSQL. Для MySQL был другой запрос, т.к. там еще более другой синтаксис и с ним проблем не было.
то вот вам вариант, и негативных моментов у него можно сказать что нет

Два момента я уже назвал выше.
Зачем, кстати? Есть PG — пользуйтесь

Изначально использовался MySQL, проект переводился на PostgreSQL, в переходный период необходимо было поддерживать работу с двумя СУБД.
Запросы были нужны именно для 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 говорит о том, что так делать не стоит.

Information

Rating
Does not participate
Registered
Activity