这有点复杂,但是我有两个表,我们假设结构是这样的:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
这些表可以基于 Table1.PhoneNumber1-> Table2.PhoneNumber 或 Table1.PhoneNumber2-> Table2.PhoneNumber 进行联接。
现在,我想得到一个结果集,其中包含 PhoneNumber1、对应于 PhoneNumber1、 PhoneNumber2和对应于 PhoneNumber2的 Some OtherField。
我想到了两种方法来做到这一点-或者在表上连接两次,或者在 ON 子句中使用 OR 连接一次。
方法一:
SELECT t1.PhoneNumber1, t1.PhoneNumber2,
t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2
FROM Table1 t1
INNER JOIN Table2 t2
ON t2.PhoneNumber = t1.PhoneNumber1
INNER JOIN Table2 t3
ON t3.PhoneNumber = t1.PhoneNumber2
这个好像有用。
方法2 强 > :
以某种方式有一个查询,看起来有点像这样-
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
我还没有让这个起作用,我不知道是否有办法做到。
最好的方法是什么?这两种方法似乎都不简单或直观... 有没有更直接的方法来做到这一点?这个要求一般是如何实现的?