我有一个查询,该查询RECORD
将从子查询返回一行作为数据类型-例如,请参见以下内容:
select *
from (
select row(st.*) table_rows
from some_table st
) x
where table_rows[0] = 339787
我试图在WHERE
子句中进一步对其进行限定,而我需要通过提取返回的RECORD
数据类型中的节点之一来做到这一点。
当我执行上述操作时,我收到一条错误消息:
ERROR: cannot subscript type record because it is not an array
有人知道实现此方法的方法吗?
使用(row).column_name
。您可以只引用表本身来创建记录:
select *
from (
select r
from some_table r
) x
where (r).column_name = 339787
以后创建与您选择的别名同名的列的可能性很小,并且上面的查询将失败,因为select r
它将返回后面创建的列而不是记录。第一种解决方案是row
像在问题中一样使用构造函数:
select row(r.*) as r
第二种解决方案是使用表的模式限定名称:
select my_squema.some_table as r
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句