Обновление нескольких строк MySQL
У меня есть стол tbl
|id|points|
1 15
2 35
3 445
4 42
Теперь, если у меня есть массив как
array (2=>10,3=>825,4=>48)
И я хочу изменить точки так, чтобы tbl
выглядит так
|id|points|
1 15
2 10
3 825
4 48
Я могу изменить значения, используя несколько запросов, но кто-нибудь может показать, как это сделать с помощью одного запроса?
2 ответа
Решение
Используйте регистр...
Update tbl
set points = CASE
WHEN ID = 1 then 05
when ID = 2 then 10
when ID = 3 then 825
when ID = 4 then 48 END
Рабочая скрипка: http://sqlfiddle.com/
Сначала вы должны загрузить свой массив в темп. Таблица. Давайте назовем это new_list, чем вы можете сделать что-то вроде
UPDATE table as t
SET points = (SELECT points FROM new_list WHERE t.id = new_list.id)
Честно говоря, я понятия не имею, работает ли это на MySQL, поэтому вам, возможно, придется подумать.
Похоже, что данные находятся внутри массива PHP, я думаю, что может быть что-то вроде
UPDATE table SET points = $points WHERE id = $id1
UPDATE table SET points = $points WHERE id = $id2
UPDATE table SET points = $points WHERE id = $id3