只用一个查询更新多行?

pan*_*hro -1 mysql

我有以下数据:

id = 1
name = 'john'

id = 2
name = 'jimmy'
Run Code Online (Sandbox Code Playgroud)

等等

有没有办法只使用一个查询更新我的表?

Table
id | name
1  | johnny
2  | james
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 5

你可以实现这一目标 CASE

UPDATE YourTable
SET    name = CASE
                WHEN id = 1 THEN 'johnny'
                ELSE 'james'
              END
WHERE  id IN ( 1, 2 ) 
Run Code Online (Sandbox Code Playgroud)

或另一种可能性(SQL小提琴)

UPDATE YourTable a
JOIN
   ( SELECT 1 AS id, 'johnny' AS name
     UNION ALL
     SELECT 2 AS id, 'james' AS name
   ) b ON 
   b.id = a.id
SET a.name = b.name;
Run Code Online (Sandbox Code Playgroud)

  • @MartinSmith我忍不住面掌; 不过还是+1. (3认同)