2013-06-04 79 views
-1

我有以下数据:只用一个查询更新多行?

id = 1 
name = 'john' 

id = 2 
name = 'jimmy' 

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

Table 
id | name 
1 | johnny 
2 | james 
+0

检查此博客:http://www.kavoir.com/2009/05/mysql-update-multiple-rows-with-one-single-query.html - 第一个结果,当我搜索更新多行与单个查询 – karthikr

回答

1

马丁·史密斯的解决方案肯定是少数行的最佳解决方案实现这一目标。如果要更新更多行数,最好使用不同的值发布几个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

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; 
+0

这不是真正可扩展的。我将要做约100行 – panthro

+0

因此,请提出反映您实际需求的问题!这100行的来源是什么?另一张桌子? –

+0

一个php的价值观 – panthro