我在本地计算机上安装了 postgresql-9.2 (运行Windows 7),我也是管理员。我正在使用查询工具pgAdmin III 来查询我的数据库。我的问题如下:
假设我有两个不同列数的表Table_A
和Table_B
。另外,假设我有两个非常简单的问题:
select * from Table_A;
select * from Table_B;
我想运行这两个查询并查看两个查询的输出。如果我在GUI或文件中看到输出,我不介意。
我也尝试了复制命令并输出到csv。但是不是附加到文件而是覆盖它。所以,我总是只得到查询2的结果。 GUI也会发生同样的事情。
评论一个查询,运行另一个查询,输出到两个不同的文件然后将这两个文件合并在一起真的很烦人。
答案 0 :(得分:5)
PostgreSQL目前不支持 - 来自文档 (http://www.postgresql.org/docs/9.4/interactive/libpq-exec.html):
命令字符串可以包含多个SQL命令(以分号分隔)。在单个事务中处理在单个PQexec调用中发送的多个查询,除非查询字符串中包含显式BEGIN / COMMIT命令以将其划分为多个事务。但请注意,返回的PGresult结构仅描述从字符串执行的最后一个命令的结果。如果其中一个命令失败,则字符串处理将停止,返回的PGresult将描述错误情况。
答案 1 :(得分:2)
您的问题不依赖于客户。
假设所有列都是text
类型,请尝试以下查询:
SELECT col_a AS col_ac, col_b AS col_bd
,NULL::text AS col_e, NULL::text AS col_f
FROM table_a
UNION ALL
SELECT col_c, col_d, col_e, col_f
FROM table_b;
列名和数据磁带由UNION SELECT
的第一个分支定义。其余的必须排成一行。
答案 2 :(得分:0)
您可以使用UNION ALL,但需要确保每个子查询具有相同的列数。
SELECT 'a', 'b'
UNION ALL
SELECT 'c' ;
无效。
SELECT 'a', 'b'
UNION ALL
SELECT 'c', 'd'
将起作用