【发布时间】:2010-11-04 08:46:40
【问题描述】:
为简单起见,假设所有相关字段均为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 中的工作方式是否相同?
【问题讨论】:
-
@Marco: here it is
-
如果我理解正确的话,第一个变体是 ANSI SQL-89 隐式语法,第二个变体是 ANSI SQL-92 显式连接语法。两者都将在符合 SQL 实现的情况下产生相同的结果,并且在完成良好的 SQL 实现中都将产生相同的查询计划。我个人更喜欢 SQL-89 语法,但很多人更喜欢 SQL-92 语法。
-
@Hogan 我指出了不同语法的官方名称。没有一个答案明确拼出全名,所以我决定将它们添加为 cmets。但是,我的评论没有回答实际问题,所以我将其添加为评论,而不是答案。 (投票率高的答案声称“INNER JOIN 是 ANSI 语法”和“隐式连接 ANSI 语法更旧”,因为这两种语法都是不同的 ANSI 语法,所以什么也没说。)
标签: sql mysql join inner-join