Update many rows in a table with a single statement? What is the easiest way to update many rows in a table? I have a csv file that looks like this:

|primary_key |value|
|          1 |  xyz|
|          2 |  abc|
|          3 |  def|
...


Rows with these primary keys already exist in the target table 

I would like to update the target table with these values. Is there syntax so that I can write something like:

update mytable set value = ('xyz', 'abc', 'def') where primary key = (1,2,3);


Looking through the MySQL Update Reference, this site (MySQL - csv update), SO (update multiple rows, multiple db updates, update multiple rows), I suspect that the answer is "no", but I'd like to confirm that this is true.
First here is sample data

mysql&gt; drop table if exists mytable;
Query OK, 0 rows affected (0.03 sec)

mysql&gt; create table mytable
    -&gt; (
    -&gt;     id int not null,
    -&gt;     value VARCHAR(255),
    -&gt;     primary key (id)
    -&gt; );
Query OK, 0 rows affected (0.06 sec)

mysql&gt; insert into mytable (id) values (1),(2),(3);
Query OK, 3 rows affected (0.06 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql&gt; select * from mytable;
+----+-------+
| id | value |
+----+-------+
|  1 | NULL  |
|  2 | NULL  |
|  3 | NULL  |
+----+-------+
3 rows in set (0.00 sec)

mysql&gt;


Here is the new query

update mytable A inner join
(
    SELECT 1 id,'xyz' value UNION
    SELECT 2   ,'abc'       UNION
    SELECT 3   ,'def'

) B USING (id)
SET A.value = B.value;


Here is the new query executed

mysql&gt; update mytable A inner join
    -&gt; (
    -&gt;     SELECT 1 id,'xyz' value UNION
    -&gt;     SELECT 2   ,'abc'       UNION
    -&gt;     SELECT 3   ,'def'
    -&gt; ) B USING (id)
    -&gt; SET A.value = B.value;
Query OK, 0 rows affected (0.06 sec)
Rows matched: 3  Changed: 0  Warnings: 0

mysql&gt; select * from mytable;
+----+-------+
| id | value |
+----+-------+
|  1 | xyz   |
|  2 | abc   |
|  3 | def   |
+----+-------+
3 rows in set (0.00 sec)

mysql&gt;