首页 > 解决方案 > 在 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[]

我怎么解决这个问题?

标签: sqlnode.jsarrayspostgresqlwhere-clause

解决方案


要检查是否iid属于数组参数,您要使用ANY而不是IN

UPDATE bonuses 
SET withdrawn = $1 
WHERE iid = ANY($2) AND sponsor = $3 
RETURNING iid

推荐阅读