You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL用IN子句批量删除地址数据报语法错误如何解决?

问题原因
  • 核心是PostgreSQL参数化查询对IN子句的数组传参支持不符合你的写法:你用IN (?)的写法无法直接匹配传入的数组参数,pg驱动解析后生成的SQL语法非法,触发括号附近的语法报错。
  • 隐藏问题:原生PostgreSQL的DELETE语句默认不会返回被删除的行数据,你现有代码中拿到的rows永远是空数组,即使删除成功接口返回的total也会是0,不符合预期。
修复方案
  1. 先修改query/missing-urls.js里的SQL语句:
export const deleteByAddress = 'DELETE FROM metrics.missing_url WHERE address = ANY($1) RETURNING *';

说明:用= ANY($1)替代IN (?)适配PostgreSQL的数组参数匹配规则,新增RETURNING *可以返回所有被删除的行数据,满足你接口返回值的需求。

  1. 现有接口代码的传参逻辑无需修改,你写的await pg.query(formatQry.deleteByAddress, [addresses])符合参数绑定规则,addresses是前端传入的字符串数组,放在参数数组的第一位刚好对应SQL里的$1占位符。

修改完成后重新执行你的curl请求即可正常删除匹配的行,同时返回正确的删除统计结果。

内容的提问来源于stack exchange,提问作者Yana Trifonova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:45:03