mysql - 我应该如何在这样的 INNER JOIN 查询中指定查询条件?

标签 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 告诉我们如何将两个表绑定(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/

相关文章:

mysql - 仅选择具有多个相同字段值的 4 条记录之一

mysql - MySQL 中搜索查询中 'dd/dd/dd' 的正则表达式

SQL在不知道列的情况下将行选择到字符串变量中

sql - 如何根据行号选择行?

php - CakePhp 在一个自定义模型中访问多个表

mysql - SQL 将作者/故事关系从 Drupal 迁移到 WordPress

PHP - 日期返回错误值

mysql - 与 MySql 的 ASP 经典连接不起作用

php - Sql 查询返回对象

mysql - 错误 : Call to a member function setStats() on a non-object