sql - 将多行转换为单个数组
问题描述
我当前的代码返回single-row error
SELECT TO_ARRAY(
SELECT 'o' || '.' || c.column_name FROM INFORMATION_SCHEMA.COLUMNS As c WHERE table_name = 'TABLE_NAME' AND c.column_name NOT IN('COL_NAME'));
子查询将每一列作为一行返回。添加时LIMIT 1
,我得到了几乎想要的结果。如何选择这些行并将它们添加到数组中?
运行查询的预期结果应该是:
SELECT o.col_name1, o.col_name2... o.col_nameN FROM table_name As o
解决方案
如果你想要一个数组,我会推荐array_agg()
:
SELECT ARRAY_AGG('o' || '.' || c.column_name)
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.table_name = 'TABLE_NAME' AND
c.column_name NOT IN('COL_NAME'));
推荐阅读
- java - Firebase 聊天应用程序没有像 whatsapp 那样显示消息
- c++ - C ++模板化元编程,检查结构是否有字段
- javascript - 如何在循环的每次迭代中等待异步操作完成
- java - 从 Java 源代码调用 Postgres 过程不起作用
- javascript - 单击 li 项目后更改 div 的背景颜色
- python - fetchall() psycopg2 返回空列表
- spring - Embedded Tomcat Hardening - 如何在 Spring Boot 中更改/覆盖广告服务器信息?
- regex - 使用 regexmatch 计算某些文本出现的次数
- django - 从模型实例引用的资产文件,如何限制对 URL 的访问
- javascript - 在 javascript 中映射文本响应