为简单起见,假设所有相关字段均为NOT NULL。
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是否相同?
MySQL
INNER JOIN 是您应该使用的ANSI语法。
INNER JOIN
通常认为它更具可读性,尤其是当您连接许多表时。
OUTER JOIN只要有需要,也可以轻松地将其替换为。
OUTER JOIN
该WHERE语法更关系模型为主。
WHERE
两个表JOINed的结果是表的笛卡尔积,将对其应用过滤器,该过滤器仅选择连接列匹配的那些行。
JOIN
使用WHERE语法更容易看到这一点。
以您的示例为例,在MySQL(通常在SQL中)中,这两个查询是同义词。
另请注意,MySQL也有一个STRAIGHT_JOIN子句。
STRAIGHT_JOIN
使用此子句,您可以控制JOIN顺序:在外部循环中扫描哪个表,在内部循环中扫描哪个表。
您无法使用WHERE语法在MySQL中控制此功能。