如果用 替换INNER JOIN,OUTER JOIN会有区别。
否则,这些查询:
SELECT ...
FROM A
INNER JOIN
B
ON A.PK = B.FK
WHERE A.Name = "Foo"
AND B.Title = "Bar"
SELECT ...
FROM A
INNER JOIN
B
ON A.PK = B.FK
AND B.Title = "Bar"
WHERE A.Name = "Foo"
SELECT *
FROM A, B
WHERE B.Title = "Bar"
AND A.Name = "Foo"
AND A.PK = B.FK
是相同的。
Oracle, MySQL,PostgeSQL并且SQL Server会以完全相同的方式对待它们,并对它们使用完全相同的计划。
我会用这个:
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
WHERE A.Name = "Foo"
AND B.Title = "Bar"
如果有一个单列键B.FK,并且这个:
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
AND B.Title = "Bar"
WHERE A.Name = "Foo"
如果有一个复合键(B.FK, B.title)。
在这种情况下,连接条件更加直观。