10

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

假设我有两个表Table_A并且Table_B列数不同。另外,假设我有以下两个非常简单的查询:

select * from Table_A;
select * from Table_B;

我想同时运行这两个查询并查看它们的输出。我不介意在 GUI 或文件中看到输出。

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

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

4

3 回答 3

8

PostgreSQL 目前不支持这一点 - 来自文档(http://www.postgresql.org/docs/9.4/interactive/libpq-exec.html):

命令字符串可以包含多个 SQL 命令(以分号分隔)。在单个 PQexec 调用中发送的多个查询在单个事务中处理,除非查询字符串中包含显式的 BEGIN/COMMIT 命令以将其划分为多个事务。但是请注意,返回的 PGresult 结构仅描述从字符串执行的最后一个命令的结果。如果其中一个命令失败,字符串的处理将随之停止,返回的 PGresult 描述了错误情况。

于 2015-12-30T03:45:35.620 回答
3

您的问题不取决于客户端。

假设所有列都是 type 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;

列名和数据磁带由 a 的第一个分支定义UNION SELECT。其余的必须排队。

于 2013-06-10T16:55:09.420 回答
0

您可以使用 UNION ALL,但您需要确保每个子查询具有相同数量的列。

SELECT 'a', 'b'
UNION ALL
SELECT 'c' ;

不会工作。

SELECT 'a', 'b'
UNION ALL
SELECT 'c', 'd'

将工作

于 2015-11-20T17:25:19.763 回答