SQLite支持哪些加入?

时间:2009-04-21 20:35:32

标签: sqlite join

根据the join-op syntax,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

它们都是独一无二的吗?哪个是等价的?

1 个答案:

答案 0 :(得分:49)

SQLite语法与the SQL-92 spec略有不同,根据该语法,以下内容是非法的:

*OUTER JOIN
*NATURAL OUTER JOIN
*NATURAL CROSS JOIN

前两个,因为<join type>,为了包含OUTER,还必须在其前面加<outer join type>。最后一个,因为NATURAL只能出现在<qualified join>,而不是<cross join>。这些似乎没有按照任何规范行事,所以避免它们是个好主意。

正如the mailing list所述,SQLite3仅支持三个联接:CROSS JOININNER JOINLEFT OUTER JOIN。以下是等效的:

, == CROSS JOIN
JOIN == INNER JOIN
LEFT JOIN == LEFT OUTER JOIN

the wikipedia article中所述,NATURAL关键字是在同名列上查找和匹配的简写,不会影响连接类型。

根据SQLite page,不支持“RIGHT”和“FULLOUTER JOIN