間違えて入力しました:
SELECT * FROM table LIMIT1
それ以外の
SELECT * FROM table LIMIT 1
LIMIT
(との間のスペースに注意してください1
)
MySQLのCLIで。ある種の解析エラーを受け取ることを期待していましたが、クエリがテーブル内のすべてのレコードを返したため、驚きました。私の最初の考えは「愚かなMySQL、これはPostgreSQLでエラーを返すことは間違いない」でしたが、PostgreSQLもすべてのレコードを返しました。次に、SQLiteでテストしました-同じ結果になりました。
少し掘り下げてみると、テーブルの後に何を入力してもかまわないことに気づきました。WHERE/ORDER/GROUP
条項がない限り:
SELECT * FROM table SOMETHING -- works and returns all records in table
SELECT * FROM table WHERE true SOMETHING -- doesn't work - returns parse error
これは標準化された動作だと思いますが、なぜそうなのか説明が見つかりませんでした。何か案は?