[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обновление двух строк в одном запросе
geka96
Здравствуйте)) Подскажите, пожалуйста...хочу sql запросом из php обновить поле manyR у пользователя с user_id = 20035313 и это же поле у пользователя с user_id = 83963544....т.е. в одном запросе обновить поля у разных пользователей, разными значениями...попробовал так:
UPDATE `table`.`test` SET `manyR` = 70, `manyR` = 77 WHERE `test`.`user_id` IN (20035313,83963544);
Не получается...значения у обоих пользователей обновились...но у обоих manyR = 77...а надо, чтобы у одного было 70, а у другого 77...помогите, пожалуйста, буду очень благодарен..))



Спустя 2 минуты, 55 секунд (5.09.2011 - 11:29) linker написал(а):
Про CASE WHEN почитай.

Спустя 27 секунд (5.09.2011 - 11:30) geka96 написал(а):
linker, спасибо)) почитал, не совсем понял...а он сервер нагружать не будет!?)

Спустя 16 минут, 40 секунд (5.09.2011 - 11:47) linker написал(а):
Нет, если совместить данную конструкцию с
... WHERE `test`.`user_id` IN (20035313,83963544)

Спустя 1 час, 49 минут, 55 секунд (5.09.2011 - 13:36) geka96 написал(а):
linker, нее..никак не могу CASE WHEN совместить...вот что намутил...ничего не получилось...
SELECT CASE WHEN (manyR = 40) THEN WHEN (manyR = 44) THEN WHERE `user_id` IN (20035313,83963544) FROM kahok;
Если честно нет сейчас времени разбираться...нужно до вечера сделать..помогите, пожалуйста, буду очень благодарен!))

Спустя 27 минут, 33 секунды (5.09.2011 - 14:04) Adil написал(а):
попробуй:
UPDATE `test` SET `manyR` = CASE `user_id` WHEN 20035313 THEN 70 WHEN 83963544 THEN 77  END

Спустя 16 минут, 35 секунд (5.09.2011 - 14:21) geka96 написал(а):
Adil, запрос занял 12 сек. (очень много), перебрал все 80 тыс. строк, ещё и обнулил все остальные строки... и только потом нашёл эти две строки и выставил им значения...мда уж...это не подходит...точно!

Спустя 1 минута, 41 секунда (5.09.2011 - 14:22) Adil написал(а):
тогда попробуй два разных запроса, быстрее будет.

Спустя 24 минуты, 30 секунд (5.09.2011 - 14:47) inpost написал(а):
geka96
mysqli_query($db,"UPDATE...; UPDATE...;");

Может индексы у тебя не стоят, поэтому так долго? Поставь индекс по полю user_id.

Спустя 5 минут, 37 секунд (5.09.2011 - 14:52) linker написал(а):
UPDATE `test` SET `manyR` = CASE WHEN `user_id` = 20035313 THEN 70 WHEN `user_id` = 83963544 THEN 77  END WHERE `user_id` IN (20035313, 83963544)
и индексы расставь на user_id.

Спустя 1 час, 49 минут, 32 секунды (5.09.2011 - 16:42) geka96 написал(а):
linker, спасибо, индексы есть)) Вот этот запрос занял всего 0.05 сек. думаю неплохо)) Спасибо ещё раз большое, очень выручил! biggrin.gif wink.gif smile.gif


_____________
Пока они пьют водку и катаются на скейтах, мы строим бизнес и делаем деньги!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.