2

我需要从表中的前 5 行中选择最小 ID 值。我通过此查询获得最高 ID:

SELECT id FROM items ORDER BY id DESC LIMIT 5

它工作正常并从前 5 行返回 ID 值:

314
313
312
311
310

现在,尝试从该集合中获取最小 ID:

SELECT MIN(id) FROM items ORDER BY id DESC LIMIT 5

我希望结果是310但 SQLite 返回1。那是怎么回事?我在哪里错了,我是否实现了我的目标?

更新:

SELECT MIN(id) FROM (SELECT id FROM news_items ORDER BY id DESC LIMIT 5)有效,所以现在我只是好奇第一个查询有什么问题。

4

2 回答 2

1

假设你实际使用的是MIN代替MAX,那么解释就很简单了。这ORDER BY id DESC LIMIT 5是对您的查询进行评估的最后一部分。id因此,在您的第一个查询中,您正在检索(应该是)的最小值0,然后ORDER BY ....是无关紧要的(您正在订购并限制一行)

于 2012-07-06T20:36:42.140 回答
0

ORDER BY需要评估整个数据集才能正确排序。

通过经验证据,我们可以假设MIN在每一行进行评估。:)

于 2012-07-06T21:02:30.643 回答