gpt4 book ai didi

mysql - 如何使用 knex 使用 "Insert ... ON DUPLICATE KEY UPDATE"添加多行

转载 作者:搜寻专家 更新时间:2023-11-01 00:10:22 28 4
gpt4 key购买 nike

所以我最近一直在玩 knex,但是我发现自己处于一种不知道该做什么的情况下。

所以我有这个查询:

knex.raw("INSERT INTO tablename (`col1`, `col2`, `col3`) VALUES (?, ?, ?) 
ON DUPLICATE KEY UPDATE col2 = VALUES(`col2`)",
[
['val1', 'hello', 'world'],
['val2', 'ohayo', 'minasan'],
]);

出于某些原因,它向我抛出错误 Expected 2 bindings, saw 3

我试过:

knex.raw("INSERT INTO tablename (`col1`, `col2`, `col3`) VALUES (?, ?, ?) 
ON DUPLICATE KEY UPDATE col2 = VALUES(`col2`)",
['val1', 'hello', 'world'],
['val2', 'ohayo', 'minasan'],
);

这次没有错误,但它只插入了第一个数组。

我还尝试将值设为对象:

[
{col1: 'val1', col2: 'hello', col3: 'world'},
{col1: 'val2', col2: 'ohayo', col3: 'minasan'},
]

但仍然没有运气。

最佳答案

我编写这段代码来插入/更新作为对象的单行或作为对象数组的多行:

function insertOrUpdate(knex: Knex, tableName: string, data: any) {
const firstData = data[0] ? data[0] : data;
return knex.raw(knex(tableName).insert(data).toQuery() + " ON DUPLICATE KEY UPDATE " +
Object.getOwnPropertyNames(firstData).map((field) => `${field}=VALUES(${field})`).join(", "));
}

关于mysql - 如何使用 knex 使用 "Insert ... ON DUPLICATE KEY UPDATE"添加多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44929996/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com