2011-04-14 57 views
3

我發現SQLite有這種意外的行爲。看來,SQLite接受SQL連接語法中的任意關鍵字。如果我不小心鍵入中立加入而不是自然加入笛卡爾產品生產。這是預期的行爲,功能還是錯誤?SQLite接受SQL語法中不存在的連接類型

select count(*) from pri; -- 22 
select count(*) from sec; -- 57458 

select count(*) from pri natural join sec; -- 57458 
select count(*) from pri nautral join sec; -- 1264076 
select count(*) from pri advanced natural join sec; -- 57458 
select count(*) from pri imaginary join sec; -- 1264076 

在Debian 6.0和SQLite 3.7.5測試使用SQLite 3.7.3在Windows 7

補充:SQLite是數據庫軟件的佳作,我建議從小型到中型項目。這裏是my brief SQLite vs PostgreSQL comparison.

回答

2

nautralimaginary被解析爲別名表:

select count(*) from (pri) natural join sec; -- 57458 
select count(*) from (pri AS nautral) join sec; -- 1264076 
select count(*) from (pri AS advanced) natural join sec; -- 57458 
select count(*) from (pri AS imaginary) join sec; -- 1264076 
+0

這也解釋了它。謝謝! – XDF 2011-04-14 11:09:11