我知道你可以一次插入多行,有没有办法在MySQL中一次更新多行(如在一个查询中)?
编辑:例如我有以下内容
Name id Col1 Col2
Row1 1 6 1
Row2 2 2 3
Row3 3 9 5
Row4 4 16 8
Run Code Online (Sandbox Code Playgroud)
我想将以下所有更新组合到一个查询中
UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;
Run Code Online (Sandbox Code Playgroud) 行数组中有超过2000个对象需要处理但得到错误最大调用堆栈超出.回调函数正在操作数据库.我试着用
的setTimeout
这是有效但执行缓慢.有没有其他方法来解决它.
var updateRowsStatus = function (req, rows, next) {
if (rows.length == 0) {
return next();
}
var batchRows = rows.splice(0, 20);
var count = 0;
batchRows.forEach(function (row) {
// other function
updateSubEntity(req, row, 'rows', function (err, response) {
if (err)throw err;
if (++count == batchRows.length) {
updateRowsStatus(req, rows, next);
}
});
});
};
Run Code Online (Sandbox Code Playgroud) 我想在一个语句中更新多行.我正在使用CodeIgniter框架.我的代码如下.
$query = "update students set id = 12 where id = 10; update students set id = 13 where id = 11;";
$this->db->query($query);
Run Code Online (Sandbox Code Playgroud)
但它给了我错误,说我在'update students set id = 13 where id = 11;'附近有语法错误.我不知道我做错了什么.
我想更新状态,但使用一个查询!
UPDATE myTable SET `status` = 0 WHERE `name` IN ('a', 'b', 'c', 'd')
UPDATE myTable SET `status` = 1 WHERE `name` NOT IN ('a', 'b', 'c', 'd')
Run Code Online (Sandbox Code Playgroud)