我有两个表(表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。
答案 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