如何批量更新mysql数据? 如何定义这样的东西:
UPDATE `table`
WHERE `column1` = somevalues
SET `column2` = othervalues
有一些像:
VALUES
('160009'),
('160010'),
('160011');
和其他值:
VALUES
('val1'),
('val2'),
('val3');
也许用mysql不可能? 一个PHP脚本?
答案 0 :(得分:35)
您的案例中最简单的解决方案是使用ON DUPLICATE KEY UPDATE
构造。它工作得非常快,并且能够轻松完成工作。
// TEXT("...") works in both ANSI/MBCS and Unicode builds
MessageBox(nullptr,
TEXT("Test_text"),
TEXT("Message Test"),
MB_ICONINFORMATION | MB_OKCANCEL);
或使用CASE
构建
L"..."
答案 1 :(得分:2)
如果"批量"你拥有的数据是动态的,来自PHP(你毕竟标记了它),然后查询看起来像这样:
INSERT INTO `foo` (id, bar)
VALUES
(1, 'pineapple'),
(2, 'asian pear'),
(5, 'peach')
ON DUPLICATE KEY UPDATE bar = VALUES(bar);
和PHP从现有数组生成它(假设数组的格式如下:
$array = (
somevalues_key => othervalues_value
);
)看起来像这样(绝不是最好的(例如,没有地址转义或消毒值),只是一个简单的例子):
$pairs = array();
foreach ($array as $key => $value) {
$pairs[] = "($key, '$value')";
}
$query = "INSERT INTO `foo` (id, bar) VALUES " . implode(', ', $pairs) . " ON DUPLICATE KEY UPDATE bar = VALUES(bar)";
答案 2 :(得分:0)
如果你有数据格式的数据,那么试试这个
,您的查询就像"UPDATE table WHERE column1 = ? SET column2 = ?"
然后设置如下
foreach($data as $key => $value) {
$query->bind_param('ss', $key, $value);
$query->execute();
}
希望它能运作。
来自this的参考。
答案 3 :(得分:0)
您可以使用implode通过where语句批量更新mysql
$requete = $pdo->prepare("update table_name set field = 1 where id in(".implode(', ', $ids).")");
$requete->execute();
$ ids是一个数组