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
告诉我们如何将两个表绑定(bind)在一起,而 WHERE
告诉我们如何过滤结果集。但两者之间有性能差异吗?或者还有其他原因说明为什么我们应该选择其中一种而不是另一种?
提前致谢!
最佳答案
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
将在 AND
条件之后使用 TableTwo
的过滤结果执行。
关于mysql - 我应该如何在这样的 INNER JOIN 查询中指定查询条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24670720/