sql - 在 pg-promise 中使用 where in 条件来检查具有在值数组中找到的值的列
问题描述
我想更新一个表并将“撤回”设置为 true,其中列 iid 具有在给定计算数组中找到的值。
let iids = data.map(el => el.iid);
// data is an object array with iid prop of type string
db.many('UPDATE bonuses SET withdrawn = $1 WHERE iid IN ($2) AND sponsor = $3 RETURNING iid', [true, iids, email]);
//email is a preset string
当我尝试这个时,我收到以下错误:
运算符不存在:字符变化 = text[]
我怎么解决这个问题?
解决方案
要检查是否iid
属于数组参数,您要使用ANY
而不是IN
:
UPDATE bonuses
SET withdrawn = $1
WHERE iid = ANY($2) AND sponsor = $3
RETURNING iid
推荐阅读
- azure - 未应用 Azure URL 授权规则
- vue.js - Vuetify - 将字段添加到数据表页脚?
- python - 过滤 DataFrameGroupBy 中值为 false 的组
- django - 模板中的多重嵌套继承
- python - 从一个 PySpark 数据帧中获取 ArrayType 列并在另一个数据帧中获取相应的值
- regex - 为什么这个正则表达式无法在字符串中找到匹配的模式?
- javascript - d3.js scaleTime 返回未定义
- javascript - 如何进行 N 级 mongoose-deep-populate?
- vue.js - Vue路由器在具有不同组件的同一路径上路由
- java - 创建名为“controllerx”的 bean 时出错: