SQL连接条件A = B或反向B = A?

KM.*_*KM. 2 sql join

我不认为它对数据库有任何影响,但在连接表时,您更喜欢编写条件:

SELECT
    ...
    FROM AAA
        INNER JOIN BBB ON AAA.ID=BBB.ID
    WHERE ...
Run Code Online (Sandbox Code Playgroud)

要么

SELECT
    ...
    FROM AAA
        INNER JOIN BBB ON BBB.ID=AAA.ID
    WHERE ...
Run Code Online (Sandbox Code Playgroud)

Tom*_*m H 9

我更喜欢第二个例子(B = A),因为在连接中我列出了确定应包括哪些B行的标准.换句话说,我想要B中的所有行,其中"X"对于B是正确的.当我需要检查超出FK的标准时,这也是一致的.例如:

SELECT
     some_columns
FROM
     Table_A A
INNER JOIN Table_B B ON
     B.a_id = A.a_id AND
     B.active = 1
Run Code Online (Sandbox Code Playgroud)

在我看来,如果我有以下情况,它将具有相同的可读性:

1 = B.active
Run Code Online (Sandbox Code Playgroud)

还要考虑您加入条件的情况包括多个表:

SELECT
     some_columns
FROM
     Table_A A
INNER JOIN Table_B B ON
     B.a_id = A.a_id AND
     B.active = 1
INNER JOIN Table_C C ON
     C.a_id = A.a_id AND
     C.b_id = B.b_id AND
     C.category = 'Widgets'
Run Code Online (Sandbox Code Playgroud)

对我而言,非常清楚应该包括来自C的行的标准.

  • 这正是我更喜欢B = A格式的原因,我觉得我在"解释"B是如何被包含的. (2认同)

Mic*_*ren 6

我更喜欢第二个选项,其中最近写的表是第一个.

我认为Linq要求它是另一种方式(选项1).


kem*_*002 5

我经常做

From TABLE_A A

JOIN TABLE_B B ON A.Column = B.Column
Run Code Online (Sandbox Code Playgroud)