1

I would like to know if it's possible to combine these two query.

My table look like this :

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

I made these two queries to update the column :

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

E.g :

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

EDIT:

Corrected syntax error

UPDATE `table` SET `server` = `serv1_NEW` WHERE `server` = 'serv1'
UPDATE `table` SET `domain` = `serv1NEW` WHERE `domain` = 'serv1.az'
executable
  • 3,365
  • 6
  • 24
  • 52
  • Multiple fields can be updated by using a comma to divide them. *UPDATE `table` SET `server` = 'serv1_NEW', `domain` = 'serv1NEW' WHERE `domain` = 'serv1.az';* – LegendaryJLD Dec 04 '18 at 15:13
  • Also, here's a related answer: https://stackoverflow.com/questions/3432/multiple-updates-in-mysql but I want to point out that dynamic updating multiple rows with different values is usually more trouble than just running two queries back to back, one for each row that needs updating – LegendaryJLD Dec 04 '18 at 15:15

1 Answers1

1

In the simple case, you can use CASE statement. For example:

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'

But two separate queries are more clear solution for your task

Maksym Fedorov
  • 6,383
  • 2
  • 11
  • 31