首页 > 解决方案 > 如何从存储在两个不同表中的数据中返回具有自定义结构的内容

问题描述

我有一个表 A(id、email、shipping_id、address、due_at)和一个表 B(id、email、timestamp、order_number、due_at)。我想返回类似的东西

| id | type | due_at |
| 1  |  A   |   ...  |
| 7  |  A   |   ...  |
| 5  |  B   |   ...  |

对于与某个电子邮件匹配的所有记录,按两个表中的 due_at ASC 排序。我正在使用 PostgreSQL 9.5 - 实现这一目标的最佳方法是什么?

标签: sqlpostgresql

解决方案


使用 UNION 和 ORDER BY

SELECT id, 'A' as type, due_at
FROM tableA
WHERE email = 'some@email'
UNION 
SELECT id, 'B', due_at
FROM tableB
WHERE email = 'some@email'
ORDER BY due_at ASC

您还可以使用 UNION ALL 而不是 UNION 来允许两个表中的重复值。


推荐阅读