2009-04-21 20 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 

は、彼らのすべてのユニークなていますか?どちらが相当ですか?

*OUTER JOIN 
*NATURAL OUTER JOIN 
*NATURAL CROSS JOIN 

最初の二つ、<join type>ので、OUTERを含有するために、も含める必要があります。

答えて

49

SQLiteの文法は、以下の違法であり、これによれば、the SQL-92 spec「Sから少し異なっていますその前に<outer join type>最後に、NATURAL<qualified join>の場合にのみ発生する可能性がありますので、<cross join>のものではありません。これらは仕様どおりに動作しているようには見えないので、回避することをお勧めします。

the mailing listと答えたSQLite3は、CROSS JOIN,INNER JOINLEFT OUTER JOINという3つの結合のみをサポートしています。以下は等価です。

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

としてNATURALキーワードを見つけ、同じ名前の列にマッチングするための速記である、と結合タイプには影響しませんthe wikipedia articleで説明しました。

SQLite page、 'RIGHT' によると 'FULL'   OUTER JOIN年代はサポートされていません。

+0

RIGHT OUTERまたはFULL OUTERのサポートはありませんか? –

+5

いいえ、私は明示的に、感謝を追加してみましょう。 –

関連する問題