1

我有一个函数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)我当然会得到三列,但我不知道如何将名称放在那里,除了把它放在函数本身中。

4

1 回答 1

3

你可以使用这个简单的语法在 Postgres 上做你想做的事:

SELECT name, (symbol_scan(id)).* 
FROM symbols
于 2013-01-21T15:08:34.923 回答