Обновить несколько строк одним запросом php - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть таблица, подобная этой:

optionId - optionName    -   optionValue

1          paypalEnv         // empty right now
2          paypalClientId    // empty right now
3          paypalSecret      // empty right now

Я хочу обновить все строки одним запросом, подобным этому: Параметры ОБНОВЛЕНИЯ SET paypalEnv =?, PaypalClientId =?, PaypalSecret =?

Ответы [ 3 ]

1 голос
/ 11 февраля 2020

Или, проще говоря ...

UPDATE options SET optionValue = 
CASE optionName 
WHEN 'paypalEnv'      THEN value1
WHEN 'paypalClientId' THEN value2
WHEN 'paypalSecret'   THEN value3
ELSE optionValue
END
WHERE optionId in (1,2,3)
1 голос
/ 11 февраля 2020

Если у вас есть УНИКАЛЬНЫЙ или ПЕРВИЧНЫЙ КЛЮЧ на (optionId, optionName), то вы можете использовать IODKU:

INSERT INTO options (optionId, optionName, optionValue) VALUES 
  (1, 'paypalEnv', ?)
  (2, 'paypalClientId', ?)
  (3, 'paypalSecret', ?)
ON DUPLICATE KEY UPDATE
  optionId    = VALUES(optionId),
  optionName  = VALUES(optionName),
  optionValue = VALUES(optionValue)
1 голос
/ 11 февраля 2020

Полагаю, вы ищете следующий запрос:

UPDATE options SET optionValue  = CASE
    WHEN optionName = 'paypalEnv' THEN value1
    WHEN optionName = 'paypalClientId' THEN value2
    WHEN optionName = 'paypalSecret' THEN value3
    ELSE optionValue
    END
WHERE optionId in (1,2,3)

Вы также можете заменить предложение WHERE следующим:

WHERE optionName in ('paypalEnv','paypalClientId','paypalSecret')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...