为简单起见,假设所有相关字段均为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是否相同?
INNER JOIN 是您应该使用的ANSI语法。
通常认为它更具可读性,尤其是当您连接许多表时。
OUTER JOIN只要有需要,也可以轻松地将其替换为。
该WHERE语法更关系模型为主。
两个表JOINed的结果是表的笛卡尔积,将对其应用过滤器,该过滤器仅选择连接列匹配的那些行。
使用WHERE语法更容易看到这一点。
以您的示例为例,在MySQL(通常在SQL中)中,这两个查询是同义词。
另请注意,MySQL也有一个STRAIGHT_JOIN子句。
使用此子句,您可以控制JOIN顺序:在外部循环中扫描哪个表,在内部循环中扫描哪个表。
您无法使用WHERE语法在MySQL中控制此功能。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。