Wal*_*row 3 sql postgresql sqldatatypes postgresql-9.1
我有一个查询将从子查询中返回一行作为RECORD数据类型 - 请参见下面的示例:
select *
from (
select row(st.*) table_rows
from some_table st
) x
where table_rows[0] = 339787
Run Code Online (Sandbox Code Playgroud)
我试图在子句中进一步限定它WHERE,我需要通过提取返回的数据类型中的节点之一来完成此操作RECORD。
当我执行上述操作时,我收到一条错误消息:
ERROR: cannot subscript type record because it is not an array
Run Code Online (Sandbox Code Playgroud)
有人知道实现这个的方法吗?
使用(row).column_name。您可以只引用表本身来创建记录:
select *
from (
select r
from some_table r
) x
where (r).column_name = 339787
Run Code Online (Sandbox Code Playgroud)
稍后创建与您选择的别名同名的列的可能性很小,并且上述查询将失败,因为select r将返回稍后创建的列而不是记录。row第一个解决方案是像您在问题中那样使用构造函数:
select row(r.*) as r
Run Code Online (Sandbox Code Playgroud)
第二种解决方案是使用表的模式限定名称:
select my_squema.some_table as r
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12720 次 |
| 最近记录: |