使用一个查询 php 更新多行



>我有这样的表格:

optionId - optionName    -   optionValue
1          paypalEnv         // empty right now
2          paypalClientId    // empty right now
3          paypalSecret      // empty right now

我想用 1 个查询更新所有行,如下所示:更新选项设置 paypalEnv = ?, paypalClientId = ?, paypalSecret = ?

我猜您正在寻找以下查询:

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')

或者,更简单地说...

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)

如果你在(optionId, optionName)上有 UNIQUE 或 PRIMARY KEY,那么你可以使用 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)

最新更新