Postgresql 从两个表中选择所有列

Postgresql 从两个表中选择所有列,postgresql,select,Postgresql,Select,假设我有以下几点: 表a | id | date | order_id | sku | price | -------------------------------------------- | 10 | 2016-08-18 | 111 | ABC | 10 | 表b | id | date | order_id | description | type | notes | valid | ------------------------------

假设我有以下几点:

表a

| id |    date    | order_id | sku | price |
--------------------------------------------
| 10 | 2016-08-18 |    111   | ABC |   10  |
表b

| id |    date    | order_id | description | type | notes | valid |
-------------------------------------------------------------------
| 50 | 2016-08-18 |    111   |     test    |  AA  |       | true  |
我想从两个表中获取所有列,因此生成的表如下所示:

| id |    date    | order_id | sku | price | description | type | notes | valid |
---------------------------------------------------------------------------------
| 10 | 2016-08-18 |    111   | ABC |   10  |             |      |       |       |
---------------------------------------------------------------------------------
| 50 | 2016-08-18 |    111   |     |       |     test    |  AA  |       | true  |
我试着结合:

(
 SELECT *
 from table_a
 where table_a.date > Date('today')
)
UNION 
(
 SELECT *
 from table_b
 where table_b.date > Date('today')
)
但我得到一个:

ERROR: each UNION query must have the same number of columns
如何解决这个问题/还有其他方法吗?

很容易:)


或者,您可以加入他们,而不是联合:

SELECT  *
FROM    table_a A
JOIN    table_b B USING ( id )
WHERE   A.date > TIMESTAMP 'TODAY'
  AND   B.date > TIMESTAMP 'TODAY';

查看更多选项:

如果有数百万行,在性能方面,哪种查询更适合这种类型?联合还是加入?@user4658312这里已经讨论过了。但是,由于您有两个不同的表结构要“合并”到一个视图中,所以对于您的案例来说,连接更取决于该任务。
SELECT  *
FROM    table_a A
JOIN    table_b B USING ( id )
WHERE   A.date > TIMESTAMP 'TODAY'
  AND   B.date > TIMESTAMP 'TODAY';