2011-04-14 55 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