联接两个表以获取SQL Server中匹配和不匹配的行

时间:2019-01-16 05:59:57

标签: sql

表场景

TABLE1

TRAN_NO | SR_NO |MAT_NAME
---------------------------
001     |   1   |Material 1
001     |   2   |Material 2

TABLE2

TRAN_NO | SR_NO | TEMP
-------------------------
 001    |   1   | 10
 001    |   2   | 20
 001    |   3   | 30
 001    |   4   | 40

我想要这样的输出

TRAN_NO | SR_NO |MAT_NAME    | TRAN_NO | SR_NO | TEMP
  001   |   1   | Material 1 |   001   |   1   |  10
  001   |   2   | Material 2 |   001   |   2   |  20
 NULL   | NULL  | NULL       |   001   |   3   |  30
 NULL   | NULL  | NULL       |   001   |   4   |  40

我尝试了所有类型的联接,包括LEFT,RIGHT,CROSS,但所有联接要么给出匹配的行,要么给出它们的笛卡尔积。

3 个答案:

答案 0 :(得分:0)

尝试一下。

select *
from table1 a
right join table2 b on a.sr_no = b.sr_no;

答案 1 :(得分:0)

选择a。,b。 从Table_2 b中离开,在a.TRAN_NO = b.TRAN_NO和a.sr_no = b.sr_no

上加入Table_1 a

答案 2 :(得分:0)

使用左联接,如下所示

 select t1.*,t2.* from TABLE2 t2 left join TABLE1 t1 
 on t2.TRAN_NO=t1.TRAN_NO and t2.SR_NO=t1.SR_NO