这有点复杂,但是我有2个表。假设结构是这样的:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
可以基于Table1.PhoneNumber1-> Table2.PhoneNumber或Table1.PhoneNumber2-> Table2.PhoneNumber联接表。
现在,我想获得一个包含PhoneNumber1,与PhoneNumber1,PhoneNumber2对应的SomeOtherField和与PhoneNumber2对应的SomeOtherField的结果集。
我想到了两种方法来执行此操作-通过在表上联接两次或通过在ON子句中使用OR联接一次。
方法1:
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
我还没有做到这一点,我不确定是否有办法做到这一点。
做到这一点的最佳方法是什么?这两种方法似乎都不是简单或直观的。一般如何实施此要求?