SELECT *
FROM TableOne
INNER JOIN TableTwo ON TableOne.ForeignKeyID = TableTwo.PrimaryKeyID
WHERE TableTwo.SomeColumnOne = 12345;
或者
SELECT *
FROM TableOne
INNER JOIN TableTwo ON TableOne.ForeignKeyID = TableTwo.PrimaryKeyID
AND TableTwo.SomeColumnOne = 12345;
我更喜欢第一种方法,因为JOIN
告诉我们两个表应该如何绑定在一起,而WHERE
告诉我们如何过滤结果集。但这两者之间是否有任何性能差异?或者为什么我们应该更喜欢一个而不是另一个呢?
提前致谢!
答案 0 :(得分:5)
SELECT *
FROM TableOne
INNER JOIN TableTwo ON TableOne.ForeignKeyID = TableTwo.PrimaryKeyID
WHERE TableTwo.SomeColumnOne = 12345;
此处WHERE
子句适用于INNER JOIN
,而
SELECT *
FROM TableOne
INNER JOIN TableTwo ON TableOne.ForeignKeyID = TableTwo.PrimaryKeyID
AND TableTwo.SomeColumnOne = 12345;
在第二种情况下,INNER JOIN
将在TableTwo
条件之后以AND
的过滤结果执行。