Postgresql 从两个表中选择所有列
假设我有以下几点: 表aPostgresql 从两个表中选择所有列,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 | ------------------------------
| 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';