2009-04-21 86 views
34

the join-op syntax,SQLite的有13条不同的语句组合:SQLite支持什么连接?

, 
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 

他们全部独特之处?哪些是等同的?

回答

49

SQLite的语法是从the SQL-92 spec“s的比特不同,根据该,以下是非法:

*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解释自然科学的关键字是寻找和相同名称的列匹配的简写,并且不影响连接类型。

按照SQLite page, 'RIGHT' 和 'FULL'   OUTER JOIN的不支持。

+0

没有正确的外部或全部支持? – 2009-04-21 20:38:01