多行更新的语法,用于更新具有唯一信息的特定行

时间:2013-05-22 06:11:26

标签: mysql sql-update

我一直很难找到一个很好的例子来说明我想要做什么。

我有一个包含1-N条目的多维数组。我想从这个数组更新MySQL中的表,但我想更新单个查询中的所有行。我无法找到任何多行更新的示例,这些更新设置了多列的值,并且还有where子句,比如确定哪些行已更新的功能。

我正在使用的表格设置如下:

TABLE
name varchar,
quota int,
warehouse int,
production int,
missing int

数组的排序方式如下,TABLE.name对应于材质名称:

$list = array(
    'Material Name One'=>array(1000,200,600,200),
    'Material Name Two'=>array(5000,0,4500,500)
);

有人可以提供一个如何形成这种语法的示例吗?

我想使用单个更新,因为数组/表的大小最终会变得非常大,我认为这种方法比快速连续制作数百个小更新要好。

1 个答案:

答案 0 :(得分:2)

首先,我没有看到单独执行的更新有什么问题,尤其是使用预准备语句。

但是如果你想以任何理由实现多行更新,你需要建立一个像这样的查询

UPDATE Table1 t JOIN
(
    SELECT 'Material Name One' name, 1000 quota, 200 warehouse, 600 production, 200 missing
    UNION ALL
    SELECT 'Material Name Two', 5000, 0, 4500, 500
    -- You can add extra rows here
    -- with UNION ALL
) u ON t.name = u.name
   SET t.quota = u.quota,
       t.warehouse = u.warehouse,
       t.production = u.production,
       t.missing = u.missing;

以下是 SQLFiddle 示例。