2011-02-16 120 views
2

我需要一個查詢來生成兩個表格之間的比較表。使用SQL比較兩個表格

事情是這樣的:

TABLE_1:

col1 | col2 | col3 
a | 1 | a_comment 
b | 2 | b_comment 

TABLE_2:

col1 | col2 | col3 
a | 3 | a_comment 
c | 4 | c_comment 

查詢結果:

col1 | table_1.col2 | table_2.col2 | col3 
a |  1  |  3  | a_comment 
b |  2  |  NULL  | b_comment 
c |  NULL  |  4  | c_comment 

另外,我需要保持秩序,S.T.如果col1中的x在col1中的任何一個表中的col1之前,它也將在查詢結果之前。 我試圖用FULL JOIN做它,但它重複col1和col3。

謝謝!

+0

如果table_1和table_2對於col3具有不同的值,會發生什麼情況? – Matthew 2011-02-16 16:24:38

回答

4
select t1.col1, t1.col2, t2.col2, t1.col3 
    from table_1 t1 
     left join table_2 t2 
      on t1.col1 = t2.col1 
       and t1.col3 = t2.col3 
union 
select t2.col1, t2.col2, t1.col2, t2.col3 
    from table_2 t2 
     left join table_1 t1 
      on t2.col1 = t1.col1 
       and t2.col3 = t1.col3 
0

全部加入就可以了,我認爲,你只需要選擇不是所有的,但你想要的東西,像

SELECT ISNULL(table_1.col1, table_2.col1) col1, table_1.col2, table2.col2, ISNULL(table_1.col3, table_2.col3) col3 

ISNULL可能會因什麼數據庫系統上調用不同的u使用

0
SELECT col1 
,  t1.col2 
,  t2.col3 
,  col3 
FROM table1 t1 
FULL OUTER JOIN table2 t2 
USING (col1, col3)