Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
limit for each where in (Серж) 18/08/2011 - 16:30:10



From: Серж - 18/08/2011 - 16:30:10
Subject:limit for each where in
-----------------
UPDATE `list` SET `platno` = 0 WHERE `user_id` IN (6683,5789,6442,7446,2884,8467,6154,12011,99,6393,5801) AND `pay` = 0 AND `show` = 1 AND `delete` = 0 ORDER BY `dat_in` DESC

Чтобы не шлепать запросы в цикл решил объединить их в один запрос. но есть проблема, нужно изменения произвести только первым трем записям для user_id. Если тут добавить 'limit 3' то изменения будут происходить всего для трех первых записей.

Так как IN массив более 600 записей (и увличивается) вариант через цикл отпадает.

в данный момент у меня куча таких запросов

Как можно это объединить в один запрос?

UPDATE `list` SET `platno` = 3 WHERE `user_id` = 5789 AND `pay` = 0 AND `show` = 1 AND `delete` = 0 ORDER BY `dat_in` DESC LIMIT 3
UPDATE `list` SET `platno` = 3 WHERE `user_id` = 6442 AND `pay` = 0 AND `show` = 1 AND `delete` = 0 ORDER BY `dat_in` DESC LIMIT 3
UPDATE `list` SET `platno` = 3 WHERE `user_id` = 7446 AND `pay` = 0 AND `show` = 1 AND `delete` = 0 ORDER BY `dat_in` DESC LIMIT 3
UPDATE `list` SET `platno` = 3 WHERE `user_id` = 2884 AND `pay` = 0 AND `show` = 1 AND `delete` = 0 ORDER BY `dat_in` DESC LIMIT 3
UPDATE `list` SET `platno` = 3 WHERE `user_id` = 8467 AND `pay` = 0 AND `show` = 1 AND `delete` = 0 ORDER BY `dat_in` DESC LIMIT 3
UPDATE `list` SET `platno` = 3 WHERE `user_id` = 6154 AND `pay` = 0 AND `show` = 1 AND `delete` = 0 ORDER BY `dat_in` DESC LIMIT 3
UPDATE `list` SET `platno` = 3 WHERE `user_id` = 12011 AND `pay` = 0 AND `show` = 1 AND `delete` = 0 ORDER BY `dat_in` DESC LIMIT 3


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
39999



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |