为了账号安全,请及时绑定邮箱和手机立即绑定

INNER JOIN ON vs WHERE子句

INNER JOIN ON vs WHERE子句

斯蒂芬大帝 2019-05-24 16:22:18
INNER JOIN ON vs WHERE子句为简单起见,假设所有相关字段都是NOT NULL。你可以做:SELECT     table1.this, table2.that, table2.somethingelseFROM     table1, table2WHERE     table1.foreignkey = table2.primarykey    AND (some other conditions)要不然:SELECT     table1.this, table2.that, table2.somethingelseFROM     table1 INNER JOIN table2    ON table1.foreignkey = table2.primarykeyWHERE     (some other conditions)这两个是以同样的方式工作MySQL吗?
查看完整描述

4 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

INNER JOIN 是您应该使用的ANSI语法。

它通常被认为更具可读性,尤其是当您加入大量表时。

OUTER JOIN只要有需要,它也可以很容易地替换。

WHERE语法更关系模型为主。

两个表格的结果JOIN是应用过滤器的表的笛卡尔积,其仅选择具有匹配的连接列的那些行。

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

至于你的例子,在MySQL(以及一般的SQL)中,这两个查询是同义词。

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

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

你无法使用WHERE语法在MySQL中控制它。


查看完整回答
反对 回复 2019-05-24
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

其他人指出,INNER JOIN有助于人类的可读性,这是首要任务; 我同意。让我试着解释为什么连接语法更具可读性。

一个基本的SELECT查询是这样的:

SELECT stuff
FROM tables
WHERE conditions

SELECT子句告诉我们什么,我们正在找回; FROM子句告诉我们从哪里获取它,WHERE子句告诉我们我们得到了哪些

JOIN是关于表的声明,它们如何绑定在一起(概念上,实际上,绑定到单个表中)。任何控制表的查询元素 - 我们从中获取东西 - 在语义上属于FROM子句(当然,这是JOIN元素所在的位置)。将join-elements放入WHERE子句会将whichwhere-from混合在一起; 这就是JOIN语法首选的原因。


查看完整回答
反对 回复 2019-05-24
  • 4 回答
  • 0 关注
  • 1808 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号