简单数据库查询的排序/限制顺序



我想知道下面这样的查询是如何工作的。。。。

select * from survey where Year < '2000' order by Year desc limit 1

我的问题是,限制是否适用:

  1. 记录整理好后,在这种情况下,我肯定会得到2000年之前的最后一张记录。或

  2. 在对记录进行排序之前,在这种情况下,将从自然顺序&然后根本不排序(因为只有一个记录)。

这似乎有点明显,但Amazons的文档似乎没有涵盖这一点。

这似乎有些明显,但亚马逊的文档似乎并不明显盖上它。

Yo,答案肯定是1),否则limit子句对任何现实世界场景都毫无用处(见下文);此外,它还严重违反了最小意外原则,因为AmazonSimpleDB语法是以SQL为模型的,在这方面可以正常工作,例如,参见PostgreSQL中的LIMIT子句:

使用LIMIT时,最好使用ORDERBY子句将结果行约束为唯一的顺序。否则你会得到查询行的不可预测子集--[…].

例如,否则SimpleDB将不允许正确的分页,这实际上是通过limit编排的(有关如何使用SimpleDB进行分页的详细信息,请参阅Mocky的回答?),即,如果limit不服从order by,您将收到下一个令牌,以防出现更多结果,这将不会产生正确排序的页面。

因此,为了最终提供从亚马逊文档中推断出的一些推理,Count也暗示了预期的行为:

count(*)和select返回的下一个令牌可以互换为只要where子句和order by子句匹配。

相关内容

  • 没有找到相关文章

最新更新