запросить несколько обновлений

0

как сделать несколько обновлений внутри одного запроса.

Предположим, у меня есть этот запрос

UPDATE table1
SET
Order = 1
WHERE
ID = 1234  

Но я хочу изменить еще несколько заказов, где ID - 2345 и 2837 и 8399
как бы я сделал это в одном и том же запросе mysql. Обратите внимание, что Заказ может отличаться от 1. поскольку поле заказа уникально.

Теги:

4 ответа

2
Лучший ответ
UPDATE table1
SET Order = 1
WHERE id IN (1234, 2345, 2837, 8399)

Если для каждого идентификатора вам нужны разные значения Order, вы, вероятно, захотите поместить цикл в любую программу, разговаривая с базой данных.

Отредактировано для добавления

Я думал о запуске в программе, но я вижу, что вы хотите выполнить SQL в интерактивном режиме.

Если вы пытаетесь расслоить последовательность непредсказуемых чисел следующим образом:

UPDATE table1  Order = 1 WHERE id = 1234
UPDATE table1  Order = 2 WHERE id = 2345
UPDATE table1  Order = 3 WHERE id = 2837
UPDATE table1  Order = 5 WHERE id = 8399
UPDATE table1  Order = 8 WHERE id = 8675

... тогда я не уверен, как вы хотите, чтобы это было короче. Вы можете написать хранимую процедуру, которая вызывается следующим образом:

do_table1_update "1,2,3,5,8,13", "1234,2345,2837,8399,8675,309"

Это то, что вы имеете в виду?

  • 0
    отредактировал вопрос
  • 0
    Я запустить это на phpmyadmin .. как бы я поставить цикл в sql?
3
UPDATE table1 
SET 
Order = 1 
WHERE 
ID in (2345,2837,8399)
1

вы можете обновлять несколько строк, но вы не можете установить для поля порядка разные значения, поэтому все поля порядка (с совпадающим идентификатором) будут иметь значение 1

UPDATE table1 SET Order = 1 WHERE ID IN(1234, 2345, 2837, 8399)
0

Если вы хотите обновить другие заказы с тем же идентификатором 1, используйте инструкцию IN, как опубликовали другие. Если вы этого не сделаете, используйте PDO и параметризованный запрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню