加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

带LIMIT1的SQL返回所有记录

发布时间:2020-12-12 07:50:03 所属栏目:MsSql教程 来源:网络整理
导读:我犯了一个错误并输入了: SELECT * FROM表LIMIT1 代替 SELECT * FROM表LIMIT 1(注意LIMIT和1之间的空格) 在MySQL的CLI中.我希望收到某种解析错误,但我很惊讶,因为查询返回了表中的所有记录.我的第一个想法是“愚蠢的MySQL,我打赌这会在PostgreSQL中返回错误
我犯了一个错误并输入了:

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

我想这是一种标准化的行为,但我找不到任何解释为什么会这样.有任何想法吗?

解决方法

您的第一个查询使用表别名等效于此查询:
SELECT * FROM yourtable AS LIMIT1

AS关键字是可选的.表别名允许您使用别名LIMIT1.foo而不是原始表名来引用该表的列.如果您希望在查询中为表提供更短或更具描述性的别名,则使用别名会很有用.如果将表连接到自身,则必须使用别名.

从SQL lite documentation:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读