Комментарии 16
update test set id = t2.id + 1 from test t2;
Так и не понял чего вы хотели добиться.
действительно увеличит значение столбца id на 1.
update test set id=id+1;
Если не это, то:
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
И тут уж развлекайтесь как душе угодно.
В Mail.ru Group много разных команд
А еще ну очень плохая репутация в игровом мире.
Да и про Mail.Агент до сих пор с ужасом многие вспоминают.
Ну и ЦРПТ тоже наверняка разработка выходцев из Mail.ru Group.
Короче, извините, не убедили)
Зы а куда спрятался sql с нормальным форматированием из кода? 8(
0
Если не это, то:
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 говорит о том, что так делать не стоит.
+1
Преимущество перед чем? Если у вас ложный набор данных то вот вам вариант, и негативных моментов у него можно сказать что нет.
Зачем, кстати? Есть PG — пользуйтесь
PostgreSQL и на MySQL
Зачем, кстати? Есть PG — пользуйтесь
0
то вот вам вариант, и негативных моментов у него можно сказать что нет
Два момента я уже назвал выше.
Зачем, кстати? Есть PG — пользуйтесь
Изначально использовался MySQL, проект переводился на PostgreSQL, в переходный период необходимо было поддерживать работу с двумя СУБД.
0
Два момента я уже назвал выше.
Совместимость с MySQL меня лично не волнует от слова совсем, второго момента не увидел. К тому же мы не знаем какие у автора были сложности.
Изначально использовался MySQL, проект переводился на PostgreSQL, в переходный период необходимо было поддерживать работу с двумя СУБД
Ну это врядли. Если только вы PG используете процентов на 10.
0
Тут скорее проблема в том, что у Postgres довольно странное поведение from в update.
Как бы оно не падает как бы результат update test t1 set t.id = t2+1 from test t2 ну по сути должен упасть, но он не падает. А надо типа так test t1 set t.id = t2+1 from test t2 on t1.id = t2.id при условии, что столбец id уникален. Поэтому лучше подзапросом делать. Тогда будет и в MySql нормально работать. Как вариант коррелрующий подзапрос на каждый столбцец, по идее должно везде работать.
Как бы оно не падает как бы результат update test t1 set t.id = t2+1 from test t2 ну по сути должен упасть, но он не падает. А надо типа так test t1 set t.id = t2+1 from test t2 on t1.id = t2.id при условии, что столбец id уникален. Поэтому лучше подзапросом делать. Тогда будет и в MySql нормально работать. Как вариант коррелрующий подзапрос на каждый столбцец, по идее должно везде работать.
0
Да и про Mail.Агент до сих пор с ужасом многие вспоминают
Mail.Агент ещё ничего был, а вот браузер Амиго — вот это было настоящее зло, которое было почти в каждом установщике софта (и, как следствие, на компах у огромного количества «обычных пользователей»). Там ещё прикол был, если этот браузер удалить, то после перезагрузки Амиго
0
НЛО прилетело и опубликовало эту надпись здесь
Запросы были нужны в синтаксисе MySQL и PostgreSQL
Подобный запрос в синтаксисе T-SQL
Непонятно, откуда T-SQL появился. Может, речь о MSSQL, не от MySQL?
0
Запросы были нужны именно для MySQL и PostgreSQL. Но PostgreSQL и MS SQL имеют разное представление о том, как связаны таблицы в UPDATE и FROM. Программист, который писал запрос имел опыт работы с MS SQL, что и стало, по всей видимости, изначальной причиной ошибки.
0
Так кто на ком стоял?
Программист умел в MSSQL (T-SQL), написал запрос update t set… from t, как умел в MSSQL, в mySQL это сработало, в PostgreSQL нет?
Программист умел в MSSQL (T-SQL), написал запрос update t set… from t, как умел в MSSQL, в mySQL это сработало, в PostgreSQL нет?
0
Какой же у вас там бардак…
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Код как искусство: как борются с багами и повышают уровень разработки в Mail.ru Group