-1

我有以下数据:

id = 1
name = 'john'

id = 2
name = 'jimmy'

等等

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

Table
id | name
1  | johnny
2  | james
4

2 回答 2

5

你可以用CASE

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

或另一种可能性(SQL Fiddle

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;
于 2013-06-04T15:44:54.380 回答
1

Martin Smith 的解决方案无疑是少数行的最佳解决方案。如果要更新更多的行,您最好发出几个UPDATES具有不同值的行,可能在准备好的语句的帮助下。

只是为了好玩,我设计了另一个解决方案:

  • 创建一个临时MEMORY
  • 将您的值插入此表(如果您正确构建插入查询,可以一次性完成)
  • 用这样的查询更新你的主表:UPDATE your_table JOIN temp_table ON (<insert JOIN condition here>) SET your_table.field1 = temp_table.field1, your_table.field2 = temp_table.field2

嗯,这闻起来。严重地。使用准备好的UPDATE.

于 2013-06-04T16:11:24.963 回答