Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Update multiple rows with one query?

Tags:

sql

mysql

I found something that works with updating one field at here: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/

UPDATE person
    SET name = CASE id
        WHEN 1 THEN 'Jim'
        WHEN 2 THEN 'Mike'
        WHEN 3 THEN 'Precious'
    END
WHERE id IN (1,2,3)

My question is how to update more than one field? Such as:

UPDATE person
    SET name = CASE, sex = CASE id
        WHEN 1 THEN 'Jim', 'female'
        WHEN 2 THEN 'Mike', 'male'
        WHEN 3 THEN 'Precious', 'male'
    END
WHERE id IN (1,2,3)

Which doesn't work of course. Tried a few other combination and failed. Any idea? Thanks!

like image 824
datasn.io Avatar asked Mar 27 '10 04:03

datasn.io


People also ask

Can we UPDATE multiple rows in a single SQL statement?

MySQL a-z in TeluguColumn values on multiple rows can be updated in a single UPDATE statement if the condition specified in WHERE clause matches multiple rows. In this case, the SET clause will be applied to all the matched rows.

How can I UPDATE multiple rows in a single column in SQL?

First, specify the table name that you want to change data in the UPDATE clause. Second, assign a new value for the column that you want to update. In case you want to update data in multiple columns, each column = value pair is separated by a comma (,). Third, specify which rows you want to update in the WHERE clause.


2 Answers

UPDATE person     SET name = CASE id         WHEN 1 THEN 'Jim'         WHEN 2 THEN 'Mike'         WHEN 3 THEN 'Precious'     END,     sex = CASE id         WHEN 1 THEN 'female'         WHEN 2 THEN 'male'         WHEN 3 THEN 'male'     END WHERE id IN (1,2,3) 
like image 164
Ayman Hourieh Avatar answered Sep 21 '22 06:09

Ayman Hourieh


Have you tried something like below. You can have multiple "SET" statements one for each column.

UPDATE person 
    SET name = CASE id 
        WHEN 1 THEN 'Jim' 
        WHEN 2 THEN 'Mike' 
        WHEN 3 THEN 'Precious' 
    END, 
    sex = CASE id 
        WHEN 1 THEN 'female' 
        WHEN 2 THEN 'male' 
        WHEN 3 THEN 'male' 
    END 
WHERE id IN (1,2,3) 
like image 39
Ashish Gupta Avatar answered Sep 19 '22 06:09

Ashish Gupta