gpt4 book ai didi

mysql - node-mysql 正确转义具有唯一条件的批量删除

转载 作者:行者123 更新时间:2023-11-29 11:52:23 25 4
gpt4 key购买 nike

我正在努力准备this使用node-mysql查询。

node-mysql docs建议嵌套数组,例如[[1, 2], [3, 4]] 转换为分组列表,例如(1, 2), (3, 4)。按照这些思路,我按如下方式设置查询:

var sql = DELETE FROM collection_post WHERE (post_id, collection_id) IN (?)
var values = [[170, 2], [170, 7]]; // Generated programmatically.

基于node-mysql中指定的规则,当我运行时

connection.query(sql, values, callback);

我假设生成的查询是:

DELETE FROM collection_post WHERE (post_id, collection_id) IN ((170, 2), (170, 7))

但是当我实际执行查询时,我得到了这个:

ER_OPERAND_COLUMNS: Operand should contain 2 column(s)

我尝试从 sql 语句中删除括号,例如

var sql = DELETE FROM collection_post WHERE (post_id, collection_id) IN ?

但这会导致语法错误。使该查询正常工作的正确格式/转义是什么?

最佳答案

所以我不久前就发现了这一点,并认为我应该在这里发布我的答案。结果你必须将这些值包装在另一个数组中。所以你的查询将如下所示:

var sql = DELETE FROM collection_post WHERE (post_id, collection_id) IN (?);

并且您的值需要如下所示:

var values = [[[170, 2], [170, 7]]];

关于mysql - node-mysql 正确转义具有唯一条件的批量删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33835335/

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