我不认为它对数据库有任何影响,但在连接表时,您更喜欢编写条件:
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)
我更喜欢第二个例子(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的行的标准.