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