假设我有以下几点:
表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 id, date, order_id, sku, price, NULL AS description, NULL AS type, NULL AS notes, NULL AS valid
 from table_a
 where table_a.date > Date('today')
)
UNION
(
 SELECT id, date, order_id, NULL AS sku, NULL AS price, description, type, notes, valid
 from table_b
 where table_b.date > Date('today')
)

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

10-09 13:50