SQL函数返回的“爆炸”表进入列

时间:2013-01-21 14:31:47

标签: sql postgresql

我有一个函数symbol_scan(integer),它返回一个包含三列的表:schema, table, count

我可以像这样执行选择查询:

> SELECT name, symbol_scan(id), FROM symbols;
       name       |        symbol_scan
------------------+--------------------------
 MY_FIRST_SYMBOL  | (public,random,1)
 MY_SECOND_SYMBOL | (public,another_table,1)
 UNIVERSAL        | (public,international,5)

是否可以使用其他查询,以便提取symbol_scan(id)中的列名,以便表格如下所示?

       name       | schema |     table     | count
------------------+--------+---------------+-------
 MY_FIRST_SYMBOL  | public | random        |   1
 MY_SECOND_SYMBOL | public | another_table |   1
 UNIVERSAL        | public | international |   5

有办法做到这一点吗?

注意:如果我运行SELECT * FROM symbol_scan(1),我当然会得到三列,但我不知道如何将名称放在那里,除了将其放入函数本身。

1 个答案:

答案 0 :(得分:3)

您可以使用以下简单语法在Postgres上执行您想要的操作:

SELECT name, (symbol_scan(id)).* 
FROM symbols