我犯了一个错误并输入:
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
我想这是一种标准化的行为,但我找不到任何解释为什么会这样。有任何想法吗?