2009-04-21 47 views
34

Theo the join-op syntax, SQLite đã 13 biệt báo cáo tham gia:Hỗ trợ SQLite là gì?

, 
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 

Họ có tất cả là duy nhất? Tương đương?

Trả lời

49

Ngữ pháp SQLite là một chút khác nhau từ the SQL-92 spec 's, theo đó, sau đây là bất hợp pháp:

*OUTER JOIN 
*NATURAL OUTER JOIN 
*NATURAL CROSS JOIN 

Hai đầu tiên, bởi vì một <join type>, để chứa OUTER, cũng phải bao gồm <outer join type> trước nó. Cuối cùng, bởi vì NATURAL chỉ có thể xảy ra trong <qualified join> 's, không phải của <cross join>. Đây không phải là hành vi theo bất kỳ thông số kỹ thuật nào, vì vậy bạn nên tránh chúng.

Như đã được trả lời trên the mailing list, SQLite3 chỉ hỗ trợ ba kết nối: CROSS JOIN, INNER JOINLEFT OUTER JOIN. Sau đây là tương đương:

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

Như đã giải thích trong the wikipedia article từ khóa TỰ NHIÊN là viết tắt cho việc tìm kiếm và phù hợp trên các cột cùng tên, và không ảnh hưởng đến các loại join.

Theo số SQLite page, 'RIGHT' và 'FULL'   OUTER JOIN 'không được hỗ trợ.

+0

Không hỗ trợ TRƯỚC KHI RA hoặc RA ĐẦY ĐỦ? –

+5

Không, và hãy để tôi thêm điều đó một cách rõ ràng, cảm ơn. –

Các vấn đề liên quan