是否可以测试文本字符串(v1
)中的每个值是否等于整数值(t2.variable
)?期望的结果是SUM
来自整数与其中一个文本字符串值匹配的条目的所有值。
e.g。
SELECT string_agg(id::text, ', ') INTO v1
FROM t1;
SELECT SUM(value) INTO v2
FROM t2
WHERE v1 = t2.variable;
答案 0 :(得分:0)
猜测您是否要测试t1
中 行中是否存在匹配id
的行。
您可以使用ANY
construct:执行此操作
SELECT SUM(value) INTO v2
FROM t2
WHERE t2.variable = ANY ((string_to_array(v1 , ', '))::int[]);
假设integer
值
但这样做效率极低。转换类型来回,聚合,再次取消。容易出错并且价格昂贵。相反,直接使用EXISTS
半连接进行测试:
SELECT SUM(value) INTO v2
FROM t2
WHERE EXISTS (SELECT 1 FROM t1 WHERE t1.id = t2.v1);