首页 > 解决方案 > 如何将子查询用作变量并在返回查询中使用变量 - Postgres 函数

问题描述

我有数据作为 xml 文件,所以第一步是将其转换为列,稍后在我的选择查询中使用这些列。

这两个步骤都应该在同一个函数中(将 XML 转换为列、SQL 查询)。

name_a := (select name from(SELECT unnest (xpath(' //name/text()',
                   xml_string))::text as name)as foo)) 

return query select * from table1 inner join table2 on table2.name in (name_a)

标签: xmlpostgresqlfunction

解决方案


最好不要使用变量,而是将子查询直接放入IN最终语句的子句中。

如果你想使用一个变量,它应该是一个数组变量。要么不要unnest使用 usearray_agg将其转换回数组。

然后可以像这样使用该数组变量:

... WHERE table2.name = ANY (array_var)

推荐阅读