2013-10-23 38 views
1

我有一个Table_A和Table_B如下,如何创建一个UNION来生成一个类似于Table_C的结果集,以便保留Table_A和Table_B中列的原始内容。组合两个表而不破坏原始列的内容

表-A:

ID High_Level_Text 
------------------------- 
01 High Level Text One 
02 High Level Text Two 
03 High Level Text Thr 

表-B:

ID Key Low_Level_Text 
---------------------------------- 
01 001 Low Level Text 01/001 
01 002 Low Level Text 01/002 
01 003 Low Level Text 01/003 
02 001 Low Level Text 02/001 
03 002 Low Level Text 03/002 

Table_C:

ID Key High_Level_Text  Low_Level_Text 
------------------------------------------------------- 
01   High Level Text One 
01 001       Low Level Text 01/001 
01 002       Low Level Text 01/002 
01 003       Low Level Text 01/003 
02   High Level Text Two 
02 001       Low Level Text 02/001 
03   High Level Text Thr 
03 002       Low Level Text 03/002 

在Table_C中,High_Level_Text列的记录是空的那些记录,没有原始数据从Table_A开始,与Table_L的Low_Level_Text和Key列相同

回答

2

你可以这样做:

select a.id as "ID", 
    null as "KEY", 
    a.High_level_text as "High_level_text", 
    null as "Low_Level_Text" 
from table_a a 
union 
select b.id, 
    b.key, 
    null, 
    b.Low_Level_Text 
from table_b b 
order by 1, 2 

sqlfiddle demo

这将在第一select(第一选择UNION被定义的列名)在你的结果,你想要的列。然后你在末尾order by,这将影响完整的结果集。

+0

难道他使用GROUP_ID http://www.sqlservercurry.com/2011/06/ SQL服务器 - 分组-ID-example.html的? – jcwrequests

+0

我不确定在这种情况下如何使用它。 –

0

试试这个:

SELECT ID, NULL as Key, High_Level_Text, NULL as Low_Level_Text 
FROM Table_A 
UNION 
SELECT ID, Key, NULL as High_Level_Text, Low_Level_Text 
FROM Table_B 
ORDER BY ID 

入住这SQL FIDDLE DEMO

0

试试这个:

SELECT id, `key` , `low_level_text` , NULL AS `high_level_text` 
FROM table_b 
UNION ALL 
SELECT id, NULL AS `key` , NULL AS `low_level_text` , `high_level_text` 
FROM table_a 
ORDER BY id ASC