如果用 替换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)
。
在这种情况下,连接条件更加直观。