根据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
它们都是独特的吗?哪个是等价的?
SQLite语法与SQL-92规范略有不同,根据该规范,以下是非法的:
*OUTER JOIN *NATURAL OUTER JOIN *NATURAL CROSS JOIN
前两个,因为a
,为了包含OUTER
,还必须包括一个
之前.最后,因为NATURAL
只能发生在
's,而不是
's.这些似乎不符合任何规范,因此避免它们是个好主意.
正如回答了邮件列表,只SQLite3的支持三种连接:CROSS JOIN
,INNER JOIN
,和LEFT OUTER JOIN
.以下是等效的:
, == CROSS JOIN JOIN == INNER JOIN LEFT JOIN == LEFT OUTER JOIN
正如维基百科文章中所解释的,NATURAL关键字是在同名列上查找和匹配的简写,并不影响连接类型.
根据SQLite页面,不支持' RIGHT
'和' FULL
' OUTER JOIN
.