vs WHERE子句上的内部联接

为简单起见,假设所有相关字段均非空

你可以做:

选择
表1.这个,表2.那个,表2.一些东西
从…起
表一、表二
哪里
表1.foreignkey=表2.primarykey
和(其他一些条件)

否则:

选择
表1.这个,表2.那个,表2.一些东西
从…起
表1内部连接表2
在表1.foreignkey=表2.primarykey上
哪里
(其他一些条件)

MySQL中,这两种方法的工作方式相同吗

内部联接是您应该使用的ANSI语法

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

只要有需要,它也可以很容易地用外部连接替换

WHERE语法更面向关系模型

两个表JOINed的结果是对其应用筛选器的表的笛卡尔乘积,该筛选器仅选择那些具有匹配的联接列的行

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

就您的示例而言,在MySQL中(通常在SQL中),这两个查询是同义词

另外,请注意MySQL还有一个stright\u JOIN子句

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

您无法在MySQL中使用WHERE语法来控制这一点

发表评论