更新多行mysql

时间:2015-03-12 20:11:15

标签: mysql sql sql-update on-duplicate-key

我有一张表tbl

|id|points|
 1   15
 2   35
 3   445
 4   42

现在,如果我有一个像

这样的数组

array (2=>10,3=>825,4=>48)

我想改变这些点,以便tbl看起来像这样。

|id|points|
 1   15
 2   10
 3   825
 4   48

我可以使用多个查询更改值,但是任何人都可以通过一个查询显示如何执行此操作吗?

2 个答案:

答案 0 :(得分:2)

使用案例陈述......

Update tbl
set points = CASE 
  WHEN ID = 1 then 05 
  when ID = 2 then 10 
  when ID = 3 then 825 
  when ID = 4 then 48 END

工作小提琴:http://sqlfiddle.com/#!9/6cb0d/1/0

答案 1 :(得分:0)

首先,您必须将数组上传到temp。表。我们称之为new_list,而不是像

那样
UPDATE table as t
SET points = (SELECT points FROM new_list WHERE t.id = new_list.id)

老实说,我不知道这是否在MySQL上运行,所以你可能需要自己考虑一下。

因为看起来数据在PHP数组中,我想可能会呈现类似

的内容
UPDATE table SET points = $points WHERE id = $id1
UPDATE table SET points = $points WHERE id = $id2
UPDATE table SET points = $points WHERE id = $id3