1

我需要加入 2 个表,但这些表有 2 对需要加入的键。

ID、Car 和 Color 是一对“对”,而不是OTHERID.

LEFT JOIN TableTest t2 ON
    (t1.ID = t2.ID)
    AND
    (t1.CAR = t2.CAR)
    AND (t1.Color = t2.Color)

我现在尝试将OTHERID密钥添加到语句中:

LEFT JOIN TableTest t2 ON
    (t1.ID = t2.ID)
    AND
    (t1.CAR = t2.CAR)
    AND
    (t1.Color = t2.Color)
    OR
    (t1.OTHERID = t2.OTHERID);

但这不起作用。

4

2 回答 2

1

您忽略了ANDvs的运算符优先级OR

如果t1.OTHERID = t2.OTHERID应该先出现,然后像这样推广它(您也不需要为每个表达式加上括号):

LEFT JOIN TableTest t2 ON
    t1.OTHERID = t2.OTHERID
    OR
    (
        t1.ID = t2.ID
        AND
        t1.CAR = t2.CAR
        AND
        t1.Color = t2.Color
    );
于 2018-06-14T07:41:49.393 回答
0

小心你的括号。

LEFT JOIN TableTest t2 ON (t1.ID = t2.ID AND t1.CAR = t2.CAR AND t1.Color = t2.Color) OR t1.OTHERID = t2.OTHERID
于 2018-06-14T07:40:17.353 回答