2009-04-21 19 views
34

Nach the join-op syntax, SQLite hat 13 verschiedene Join-Anweisungen:Welche Joins unterstützt 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 

Sind sie alle einzigartig? Welche sind gleichwertig?

Antwort

49

Die SQLite Grammatik ist ein wenig verschieden von the SQL-92 spec ‚s, nach denen, die folgende sind illegal:

*OUTER JOIN 
*NATURAL OUTER JOIN 
*NATURAL CROSS JOIN 

Die ersten beiden, weil ein <join type>, um OUTER, enthalten auch eine enthalten muss <outer join type> davor. Die letzte, weil NATURAL kann nur in <qualified join> 's, nicht <cross join>' s auftreten. Diese scheinen sich nicht gemäß irgendeiner Spezifikation zu verhalten, daher ist es eine gute Idee, sie zu vermeiden.

Wie auf the mailing list beantwortet wurde, nur SQLite3 unterstützt drei verbindet: CROSS JOIN, INNER JOIN und LEFT OUTER JOIN. Die folgenden sind äquivalent:

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

Wie in the wikipedia article die natürliche Schlüsselwort Stenografie für die Suche nach und passend auf same-name Spalten ist, und beeinflusst nicht die der Join-Typ.

Nach dem SQLite page, 'RIGHT' und 'FULL'   OUTER JOIN ‚s werden nicht unterstützt.

+0

Keine RIGHT OUTER oder FULL OUTER Unterstützung? –

+5

Nein, und lassen Sie mich das explizit hinzufügen, danke. –

Verwandte Themen