首页 > 解决方案 > SQL将两个带有键的表连接到不同的列

问题描述

我有两个表,在 SQL 中;第一个表(T1)是这样的:

ID  
----
401 
402
403
634
635
636

第二个表(T2)是这样的:

ID1 | VALUE1 | ID2 | VALUE2
---- -------- ----- -------
401 | TEST   | 634 | SAMPLE1
402 | MYVAL  | 635 | TRUE

我需要的结果是这样的:

T1.ID | T2.ID1| T2.VALUE1 | T2.ID2 | T2.VALUE2
------ ------- ----------- -------- ----------
401   | 401   | TEST      | 634    | SAMPLE1
402   | 402   | MYVAL     | 635    | TRUE
634   | 401   | TEST      | 634    | SAMPLE1
635   | 402   | MYVAL     | 635    | TRUE

T1 的值 403 和 636 不能出现在结果中,因为在 T2 中没有任何引用。

有没有办法通过一些 INNER JOIN 来完成这个?我正在使用 MS SQL Server 2017。

标签: sqlsql-server

解决方案


这不只是在IN条款吗?

SELECT *
FROM dbo.Table1 T1
     JOIN dbo.Table2 T2 ON T1.ID IN (T2.ID1,T2.ID2)

DB<>小提琴


推荐阅读