更新多行 mysql

Update Multiple Rows mysql

我有一个tabletbl

|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

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

使用 case 语句...

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

工作fiddle:http://sqlfiddle.com/#!9/6cb0d/1/0

首先,您必须将数组上传到临时文件。 table。我们称它为 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