在postgresql中输出多个sql查询的结果

时间:2013-06-09 10:37:47

标签: postgresql pgadmin

我在本地计算机上安装了 postgresql-9.2 (运行Windows 7),我也是管理员。我正在使用查询工具pgAdmin III 来查询我的数据库。我的问题如下:

假设我有两个不同列数的表Table_ATable_B。另外,假设我有两个非常简单的问题:

select * from Table_A;
select * from Table_B;

我想运行这两个查询并查看两个查询的输出。如果我在GUI或文件中看到输出,我不介意。

我也尝试了复制命令并输出到csv。但是不是附加到文件而是覆盖它。所以,我总是只得到查询2的结果。 GUI也会发生同样的事情。

评论一个查询,运行另一个查询,输出到两个不同的文件然后将这两个文件合并在一起真的很烦人。

3 个答案:

答案 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'

将起作用