将两个查询转换为一个更新查询

时间:2018-12-04 15:09:55

标签: mysql sql

我想知道是否可以合并这两个查询。

我的桌子看起来像这样:

------------------------------------
| id | server  | domain   | status |
------------------------------------
| 1  | serv1   | serv1.az | 0      |
| 2  | serv2   | serv2.lo | 0      |
| 3  | serv2   | servNEW  | 1      |
| 4  | serv3   | serv.as  | 0      |
------------------------------------

我做了这两个查询以更新列:

UPDATE `table` SET `server` = ? WHERE `server` = ?
UPDATE `table` SET `domain` = ? WHERE `domain` = ?

例如:

UPDATE `table` SET `server` = `serv1_NEW` WHERE `server` = `serv1`
UPDATE `table` SET `domain` = `serv1NEW` WHERE `domain` = `serv1.az`

编辑:

更正的语法错误

UPDATE `table` SET `server` = `serv1_NEW` WHERE `server` = 'serv1'
UPDATE `table` SET `domain` = `serv1NEW` WHERE `domain` = 'serv1.az'

1 个答案:

答案 0 :(得分:1)

在简单的情况下,您可以使用CASE statement。例如:

UPDATE `table` SET 
`server`= CASE
    WHEN `server` = 'serv1' THEN `serv1_NEW`
    ELSE `server`
END, 
`domain`= CASE
    WHEN `domain` = 'serv1.az' THEN `serv1NEW`
    ELSE `domain`
END
WHERE `server` = 'serv1' OR `domain` = 'serv1.az'

但是两个单独的查询是您任务的更清晰解决方案