我有两个数据相似但不同的表。这两个表都有自己的插入时间戳列。
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 |
+------------+----------+----------+
在不改变模式的情况下,这可能吗?如果是,如何?
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-Worker的建议。
通过添加您要求的排序并使用真正的NULLs:来构建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