Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Запрос на селект с апдейтом


Автор: Archon7th 28.6.2009, 22:39
Задача вроде как приметивнейшая, сталкивались наверно все
выделить юзера и проапдейтить его lastupate_time

как 1 запросом на селект проапдейтить только ту строку которую мы получили

при попытке вложенной вставки под переменную, МуСкуль апдейтит всех юзеров, но селектит именно того кого нужно

Автор: skyboy 29.6.2009, 00:29
что значит "выделить"?
зачем делать "select с апдейтом"? почему не сделать update записи по указанным условиям?
надо убедиться, что запись такая существует? так после выполнения update запроса можно получить количество затронутых строк.

Автор: Archon7th 29.6.2009, 08:05
просто данный запрос делает аякс, и очень тормознуто делать 17-25 запросов
большая часть из которых парные
т.е. селект строки, приметивнийшее апдейт её же с действием вида +1 или := и все

поэтому задался целью оптимизации, и запнулся на первом же шаге

Автор: Akina 29.6.2009, 08:13
На первом шаге вынесите логику обработки на сервер (хранимка, триггер)...

Автор: Zloxa 29.6.2009, 09:27
Цитата(Archon7th @  28.6.2009,  22:39 Найти цитируемый пост)
юзера и проапдейтить его lastupate_time

Код

 update `users` set `lastupate_time` = :v_lastupate_time where `user_id`=:v_user_id

Цитата(Archon7th @  28.6.2009,  22:39 Найти цитируемый пост)
как 1 запросом на селект проапдейтить только ту строку которую мы получили

запросы на select не апдейтят.
Цитата(Archon7th @  28.6.2009,  22:39 Найти цитируемый пост)
при попытке вложенной вставки под переменную, МуСкуль апдейтит всех юзеров, но селектит именно того кого нужно

Обратитесь http://forum.vingrad.ru/forum/topic-261999.html, там Точно помогут.

PS http://www.segfault.kiev.ua/smart-questions-ru.html#beprecise
http://www.segfault.kiev.ua/smart-questions-ru.html#explicit



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)