我应该如何在这些INNER JOIN查询中指定查询条件?

时间:2014-07-10 07:26:10

标签: mysql sql

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告诉我们如何过滤结果集。但这两者之间是否有任何性能差异?或者为什么我们应该更喜欢一个而不是另一个呢?

提前致谢!

1 个答案:

答案 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的过滤结果执行。