3

SQLite でこの予期しない動作を見つけました。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.3 および Windows 7 上の SQLite 3.7.5 でテスト済み。

追加するには: SQLite は優れたデータベース ソフトウェアであり、小規模から中規模のプロジェクトにお勧めします。これが私の簡単なSQLiteとPostgreSQLの比較です。

4

1 に答える 1

2

nautralテーブルへimaginaryのエイリアスとして解析されます。

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
于 2011-04-14T10:35:39.583 に答える