0

我一直很难找到一个很好的例子来说明我正在尝试做的事情。

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

我正在使用的表是这样设置的:

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

数组是这样排列的,TABLE.name 对应 Material Name:

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

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

我想使用单个更新,因为数组/表的大小最终可能会变得非常大,我的印象是这种方法比快速连续进行数百个小更新要好。

4

1 回答 1

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示例。

于 2013-05-22T06:29:00.830 回答