postgresql - 选择两个表中的所有列

标签 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 |
-------------------------------------------------------------------
| 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

如何解决这个问题/是否有其他方法可以做到这一点?

最佳答案

或者,您可以直接加入它们,而不是 UNION:

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

查看更多选项:https://www.postgresql.org/docs/9.5/static/queries-table-expressions.html#QUERIES-JOIN

关于postgresql - 选择两个表中的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39025695/

相关文章:

postgresql - 窗口函数和 group by 子句如何交互?

postgresql - 如何回滚所有打开的 PostgreSQL 事务

php - MySQL 选择最近日期不在两个日期之间的位置

R dplyr select_if 具有多个条件

c - 在 C 中使用 select() 和 write_fds 时发送数据的正确方法

c++ - Select() 调用不工作本地主机

database - PostgreSQL 将列名更改为另一个表列

postgresql - 无法使用 pg_dump PostgreSQL 备份超表 TimescaleDB 数据库

SQL根据多个字段删除重复行

sql - 关于sql group by的一个问题