sql - "Explode"SQL函数返回的表成列

标签 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) 我当然会得到三列,但我不知道如何把名字放在那里,除了把它放在功能本身。

最佳答案

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

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

关于sql - "Explode"SQL函数返回的表成列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14440818/

相关文章:

mysql - 更改 mysql 的默认排序行为

mysql - 提高查询性能/重写查询以在 MySQL 上更快

postgresql - 如何在 pgAdmin 中通过 JDBC 连接到数据库?

python - CS50 Web 编程 - 导入 books.csv 文件时出现 Postgres SQL 错误

java - 如何使用 Java 从可变 Json 文件创建 Sql 语句

mysql - MySQL 中的 SELECT INTO 变量 - 如何检查结果是否存在以及如何使用结果执行 IF 语句?

sql - 如何查找重复项(正确方法)?

PHP超时错误500

sql - 获取最近 10 个日期的行

sql - 为包含列表的单元格返回多行