2017-02-28 43 views
0

我使用mysql节点,我必须更新多个行,我想用一个查询来完成。我是能够插入多行,但我不能够更新多行,下面是代码片段节点mysql允许通过一个查询更新多行

var update_tasks="UPDATE tasks SET phy_1_id=? , phy_2_id=? where id=?"; 
        db.query(update_tasks,[[-1,-1,10086],[-1,-1,10087]],function (er, results, fields){ 
         if (er) {console.log("Error "+JSON.stringify(er));return res.status(500).send(er);} 
         else{ 
         return res.status(200).json(results); 
         } 
        }) 

你能告诉我,我应该如何去了解这一点。

回答

0

你在正确的轨道上,但它不应该是这样的。参数查询取决于列的数据类型,例如字符串,您的数组转换为字符串更新前的列

var pkId = 'unique12312' 
var update_tasks="UPDATE tasks SET phy_1_id=? , phy_2_id=? where id=?"; 
    db.query(update_tasks,[[-1,-1,10086].toString(),[-1,-1,10087].toString(), pkId],function (er, results, rows, fields){ 
     if (er) { 
     console.log("Error "+JSON.stringify(er)); 
     return res.status(500).send(er); 
     } else{ 
     return res.status(200).json(results); 
     } 
}); 
+0

为了更新单行我通过[-1,-1,10086]和它的作品,也更新语句中所有列的数据类型是bigint –

+0

我不认为您的问题中的查询会起作用。它的大小不是数组,你给出的参数是一个数组。另外,你不在查询语句中指定whereclause id。 – digit