SQLite支持哪些加入?

And*_*rov 36 sqlite join

根据join-op语法,SQLite有13个不同的连接语句:

,
JOIN
LEFT JOIN
OUTER JOIN
LEFT OUTER JOIN
INNER JOIN
CROSS JOIN
NATURAL JOIN
NATURAL LEFT JOIN
NATURAL OUTER JOIN
NATURAL LEFT OUTER JOIN
NATURAL INNER JOIN
NATURAL CROSS JOIN
Run Code Online (Sandbox Code Playgroud)

它们都是独特的吗?哪个是等价的?

And*_*rov 49

SQLite语法与SQL-92规范略有不同,根据该规范,以下是非法的:

*OUTER JOIN
*NATURAL OUTER JOIN
*NATURAL CROSS JOIN
Run Code Online (Sandbox Code Playgroud)

前两个,因为a <join type>,为了包含OUTER,还必须包括一个<outer join type>之前.最后,因为NATURAL只能发生在<qualified join>'s,而不是<cross join>'s.这些似乎不符合任何规范,因此避免它们是个好主意.

正如回答了邮件列表,只SQLite3的支持三种连接:CROSS JOIN,INNER JOIN,和LEFT OUTER JOIN.以下是等效的:

, == CROSS JOIN
JOIN == INNER JOIN
LEFT JOIN == LEFT OUTER JOIN
Run Code Online (Sandbox Code Playgroud)

正如维基百科文章中所解释的,NATURAL关键字是在同名列上查找和匹配的简写,并不影响连接类型.

根据SQLite页面,不支持' RIGHT'和' FULLOUTER JOIN.

  • 不,请允许我明确补充一下,谢谢. (5认同)