开发者社区> 问答> 正文

INNER JOIN ON与WHERE子句

为简单起见,假设所有相关字段均为NOT NULL。

你可以做:

SELECT table1.this, table2.that, table2.somethingelse FROM table1, table2 WHERE table1.foreignkey = table2.primarykey AND (some other conditions) 要不然:

SELECT table1.this, table2.that, table2.somethingelse FROM table1 INNER JOIN table2 ON table1.foreignkey = table2.primarykey WHERE (some other conditions) 这两个工作方式MySQL是否相同?

展开
收起
保持可爱mmm 2020-05-08 10:24:30 434 0
1 条回答
写回答
取消 提交回答
  • INNER JOIN 是您应该使用的ANSI语法。

    通常认为它更具可读性,尤其是当您连接许多表时。

    OUTER JOIN只要有需要,也可以轻松地将其替换为。

    该WHERE语法更关系模型为主。

    两个表JOINed的结果是表的笛卡尔积,将对其应用过滤器,该过滤器仅选择连接列匹配的那些行。

    使用WHERE语法更容易看到这一点。

    以您的示例为例,在MySQL(通常在SQL中)中,这两个查询是同义词。

    另请注意,MySQL也有一个STRAIGHT_JOIN子句。

    使用此子句,您可以控制JOIN顺序:在外部循环中扫描哪个表,在内部循环中扫描哪个表。

    您无法使用WHERE语法在MySQL中控制此功能。

    2020-05-08 10:25:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载