联接两个表以引用SQL Server中的多个列

时间:2019-03-21 23:52:28

标签: sql sql-server

有什么方法可以基于SQL Server中的多个列联接两个表?

我有两个桌子。

表1为:

id |   Code   | column 2| column 3| column 4 | 
---+----------+---------+---------+----------+
 1 |   ABC    |   6     |   6     |   9      |
 2 |   XYZ    |   7     |   7     |   10     |
 2 |   MNO    |   6     |   6     |   10     |
 3 |   XYZ    |   6     |   7     |   10     | 
 3 |   PQR    |   5     |   6     |   3      |
 4 |   ABC    |   9     |   8     |   8      |
 5 |   MNO    |   1     |   2     |   6      |

表2为:

id | column 1 |  Result
---+----------+--------------
 1 |   ABC    |  Pass
 2 |   XYZ    |  Pass
 2 |   MNO    |  Fail
 3 |   PQR    |  Fail
 5 |   MNO    |  Pass

现在,我想在IDCODE的基础上将两个表引用到两个列。我想要表1中的所有行,并将结果仅放在表1中的匹配行中。

我的最终结果应该是这样的:

id |   Code   | column 2| column 3| column 4 | Result
---+----------+---------+---------+----------+--------
 1 |   ABC    |   6     |   6     |   9      | Pass
 2 |   XYZ    |   7     |   7     |   10     | Pass
 2 |   MNO    |   6     |   6     |   10     | Fail
 3 |   XYZ    |   6     |   7     |   10     | 
 3 |   PQR    |   5     |   6     |   3      | Pass
 4 |   ABC    |   9     |   8     |   8      |
 5 |   MNO    |   1     |   2     |   6      | Pass

我到目前为止使用的查询是

select 
    tb1.*, tb2.result 
from 
    table1 tb1
left join 
    table2 tb2 on tb1.id = tb2.id and tb1.code = tb2.column1

此查询是否正确,因为我在表1上得到重复的行?

1 个答案:

答案 0 :(得分:0)

您可能想使用INNER JOIN:

select tb1.*,tb2.result from table1 tb1
INNER JOIN table2 tb2
on tb1.id = tb2.id and tb1.code=tb2.column1

enter image description here