当前位置: 首页 > 知识库问答 >
问题:

具有多行和多列更新的节点mysql“ON DUPLICATE KEY UPDATE”子句的占位符语法

左丘善
2023-03-14

当需要更新多行和多列时,使用带有ON DUPLICATE KEY UPDATE子句的占位符时,我很难找到正确的语法。

下面的示例是如何对多行执行简单的Insert命令。那个“?”占位符将替换为数组值。

但是,如果我想在重复密钥更新中使用,我该怎么做呢?我发现的各种示例似乎都表明,我们必须显式地显示每个键=值对,这排除了使用“”的可能性占位符。

let twoDimensionArray = [keycol, colA, colB, colC, colD]
// iterate to add more rows.

let fullQuery = "INSERT INTO myTable (keycol, colA, colB, colC, colD) VALUES ?"

con.query(fullQuery,[twoDimensionArray], function(err, result) {
  //do stuff
});

共有1个答案

谢诚
2023-03-14

我能够通过在单个字符串中连接数组并在查询中直接连接来解决这个问题。注意,我也有带空格的列名,所以我需要使用map函数将它们用反引号括起来。

最终结果如下:

let twoDimensionArray = [keycol, colA, colB, colC, colD, colname with spaces]
// iterate to add more rows.

let fullQuery = "INSERT INTO myTable (" + twoDimensionArray.map(colName => '`'+colName+'`').join(',') + ") VALUES ?"

con.query(fullQuery,[twoDimensionArray], function(err, result) {
  //do stuff
});
 类似资料:
  • 使用< code>node-postgres我想更新我的用户模型中的列,目前我有这个 所以我可以做到这一点 但是,如果我想更新多个列和值,我目前正在做一些非常低效的事情,并调用该方法x次(即对于每个查询) 我如何通过只调用一次数据库来生成这个。 谢谢

  • 问题内容: 案件: 如何从相等的地方更新数据? 问题: 当我运行以下更新语句时,它将更新中的所有记录(即使中的字段不存在)。 我如何使用的多个更新表的语法,在仅更新记录只有在存在于和平等的吗? 提前致谢。 问题答案: 这是with join in 的正确语法 SQLFiddle演示

  • 问题内容: 我试图像这样更新我的表: 我可以做一个,但是会发送50多个单独的查询,这非常慢。这就是为什么我希望将其合并为1个大查询。 (我确实为每行使用一个 id ,但是 game_id , x 和 y 的组合才是我用来标识所需行的方法。) 这里描述了来自codeIgniter的update_batch()函数: 使用CodeIgniter更新批处理 是有用的,并且几乎是完美的,但是它仅允许1个单

  • 问题内容: 我有一个数据库,其中有四列对应于开始和结束位置的地理坐标x,y。这些列是: 00 00 x1 11 我有这四个列的索引,其顺序为x0,y0,x1,y1。 我列出了大约一百种地理对组合。我将如何有效地查询此数据? 我想按照此SO答案的建议执行类似的操作,但它仅适用于Oracle数据库,不适用于MySQL: 我以为可能对索引做些什么?最好的方法是什么(即:最快的查询)?谢谢你的帮助! 笔记

  • 问题内容: $pageMin = (($page * 10)-10); 似乎占位符不适用于LIMIT … 当我将pageMin连接起来时,例如: 甚至 使用占位符,它不会返回任何结果,为什么? 谢谢你的帮忙。 问题答案: 当您将参数数组传递给它们时,它们将被视为字符串,并且limit是一个int值。只需将bindValue与int类型一起使用即可。

  • 问题内容: 在使用MySQL的应用程序的Rails迁移中,我具有以下代码: 运行迁移时,出现以下错误: 为什么会出现此错误,我该如何解决? 问题答案: 这里的问题是,当同一执行块中有多个SQL命令时,Rails Mysql2数据库适配器就会阻塞。以下将正常运行: 如果您是将PostgreSQL与Rails一起使用,则此行为可能会使您感到困惑,因为Postgres适配器没有相同的限制。