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        |
+------------+----------+    +------------+----------+

これらのテーブルからすべてのデータを取得し、2つの作成日でマージされた日付列を介して並べ替えたいと思います。つまり、次の結果が欲しい

+------------+----------+----------+
| 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値が必要な場合は、IkeWalkerが提案するように実行してください。

于 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 に答える