加入多个列

时间:2011-08-24 23:06:29

标签: sql tsql

我有两个表(表A和表B),我想在两个表中的多个列上连接。

Table A                         
Col1     Col2                
================            
A11      A21                 
A22      A22              
A33      A23                 

Table B 
Col1     Col2   Val 
=================  
B11     B21     1  
B12     B22     2  
B13     B23     3  

我希望表A中的两列都加入表B中的Col1和Col2,以获得Val。

4 个答案:

答案 0 :(得分:46)

在您的示例中同意不匹配。
如果你的意思是两个列都需要这样的查询,或者需要重新检查数据设计。

    Select TableA.Col1, TableA.Col2, TableB.Val
    FROM TableA
    INNER JOIN TableB
          ON TableA.Col1 = TableB.Col1 OR TableA.Col2 = TableB.Col2 
          OR TableA.Col2 = TableB.Col1 OR TableA.Col1 = TableB.Col2

答案 1 :(得分:21)

其他查询都基于符合条件的任何条件,它将返回记录...如果要确保表A的BOTH列匹配,则必须执行类似的操作。 ..

select 
      tA.Col1,
      tA.Col2,
      tB.Val
   from
      TableA tA
         join TableB tB
            on  ( tA.Col1 = tB.Col1 OR tA.Col1 = tB.Col2 )
            AND ( tA.Col2 = tB.Col1 OR tA.Col2 = tB.Col2 )

答案 2 :(得分:2)

下面是您可以编写的SQL结构。您可以使用“AND”或“OR”进行多个连接。

Select TableA.Col1, TableA.Col2, TableB.Val
FROM TableA, 
INNER JOIN TableB
 ON TableA.Col1 = TableB.Col1 OR TableA.Col2 = TableB.Col2

答案 3 :(得分:0)

tableB.col1 = tableA.col1 
OR tableB.col2 = tableA.col1  
OR tableB.col1 = tableA.col2  
OR tableB.col1 = tableA.col2