我需要一个查询来生成两个表之间的比较表。
这样的事情:
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中位于y之前,它也将位于查询结果中。 我尝试用FULL JOIN做它,但它复制了col1和col3。
谢谢!
答案 0 :(得分: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
答案 1 :(得分:0)
我认为完全加入是好的,你只需选择不是全部,而只是选择你想要的,比如
SELECT ISNULL(table_1.col1, table_2.col1) col1, table_1.col2, table2.col2, ISNULL(table_1.col3, table_2.col3) col3
根据您使用的数据库系统
,可能会调用ISNULL答案 2 :(得分:0)
SELECT col1
, t1.col2
, t2.col3
, col3
FROM table1 t1
FULL OUTER JOIN table2 t2
USING (col1, col3)