есть таблица игроков:
есть таблица рейтинга:
Мне необходимо добавлять золото в поле player_gold согласно рейтингу из поля rating_quest_0.
Мой запрос:
SET @a:=51;
UPDATE resources_players
SET player_gold = player_gold + @a:=@a-1
WHERE player_id IN ( SELECT player_id
FROM resources_quests
ORDER BY rating_quest_0 DESC ) LIMIT 50;
для связи использую id игроков. Произвожу сортировку по полю рейтинга, и беру id шники подзапросом в in. После чего присваиваю золото (первому в рейтинге 50, далее 49 и так далее).
Все работает отлично, но проблема в том что оператор in содержит сразу все id (в порядке присваивания) Но запрос начинает выполняться не в том порядке, в котором я хочу а применяет к той строке, которую первую нашел в in.
Как можно решить эту задачу 1 запросом. Не хотелось бы через цикл делать 50 запросов. Спасибо!
SET @a:=51;
UPDATE resources_players rp INNER JOIN (SELECT player_id FROM resources_quests WHERE rating_quest_0 != 0 ORDER BY rating_quest_0 DESC LIMIT 50) rq SET player_gold = player_gold + @a:=@a-1 WHERE rp.player_id = rq.player_id;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть много доменов, которые нужно обойти, если начать в несколько потоков долбить сайты можно попасть на поддомены, принадлежащие одному...
как добавить свои поля - type_pay(число),days(количество дней),user при оплате через paypal
Есть несколько больших форм, в которых сотни реквизитов, они заполняются вручнуюИ при сохранении нужно провести логический контроль заполненной...