0

我有 2 个具有相似但不同数据的表。两个表都有自己的插入时间戳列。

Table A                      Table B
+------------+----------+    +------------+----------+
| a_created  | a_data   |    | b_created  | b_data   |
+------------+----------+    +------------+----------+
| 2012-09-01 | A        |    | 2012-09-03 | C        |
| 2012-09-05 | B        |    | 2012-09-04 | D        |
+------------+----------+    +------------+----------+

我想从这些表中获取所有数据,通过合并的日期列按两个创建日期排序。即我想要以下结果

+------------+----------+----------+
| x_created  | a_data   | b_data   |
+------------+----------+----------+
| 2012-09-01 | A        | NULL     |
| 2012-09-03 | NULL     | C        |
| 2012-09-04 | NULL     | D        |
| 2012-09-05 | B        | NULL     |
+------------+----------+----------+

这甚至可以在不改变架构的情况下实现吗?如果是这样,怎么做?

4

2 回答 2

3
select a_created as x_created,a_data,'null' as b_data from table_a
union all 
select b_created as x_created,'null' as a_data,b_data from table_b
order by x_created

sqlfiddle

我使用了带引号的“null”,因为当您想添加字符串时它会很方便,但是如果您想要真正的 NULL 值,请按照 Ike Walker 的建议进行操作。

于 2012-09-06T19:14:31.177 回答
2

通过添加您要求的排序并使用真正的 NULL,以 mrmryb 的答案为基础:

select a_created as x_created,a_data,NULL as b_data 
from table_a
union all 
select b_created as x_created,NULL as a_data,b_data 
from table_b
order by 1
于 2012-09-06T19:21:19.627 回答