我需要从表格的前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)
有效,所以现在我只是对第一个查询的错误感到好奇。
答案 0 :(得分:1)
假设您实际使用的是MIN
而不是MAX
,那么解释非常简单。 ORDER BY id DESC LIMIT 5
是在您的查询中评估的最后一部分。因此,在您的第一个查询中,您正在检索id
的最小值(它应该是0
),然后ORDER BY ....
是无关紧要的(您正在订购并限制一行)< / p>
答案 1 :(得分:0)
ORDER BY
要求评估整个数据集,以便正确排序。
通过经验证据我们可以假设MIN
在每一行进行评估。 :)