首页 > 解决方案 > SQLite:选择从 n 到 ny 范围内的最小值

问题描述

我有一个由 id 和客户标识的订单列表。我需要从该客户放置的索引 n 的顺序开始知道索引 n-9 的订单的 ID。

例如:

SELECT OrderID 
FROM Orders 
WHERE CustomerID = "1808317576" AND OrderID < 29 
ORDER BY OrderID DESC LIMIT 9

上面的查询返回这些记录:

订单编号
28
26
23
20
19
18
17
16
13

为了解决我的问题,我尝试这样做:

SELECT OrderID 
FROM Orders 
WHERE CustomerID = "1808317576" AND OrderID < 29 
ORDER BY OrderID DESC LIMIT 1

我会需要:

订单编号
13

但它返回这个:

订单编号
28

然后我试图DESCORDER BY

SELECT OrderID 
FROM Orders 
WHERE CustomerID = "1808317576" AND OrderID < 29 
ORDER BY OrderID LIMIT 1

但它返回这个:

订单编号
1

我怎么能得到13?!

标签: sqlitesql-order-bysql-limit

解决方案


添加OFFSET 8以跳过返回的前 8 行并设置LIMIT 1

SELECT OrderID 
FROM Orders 
WHERE CustomerID = '1808317576' AND OrderID < 29 
ORDER BY OrderID DESC 
LIMIT 1 OFFSET 8

或更简单:

SELECT OrderID 
FROM Orders 
WHERE CustomerID = '1808317576' AND OrderID < 29 
ORDER BY OrderID DESC 
LIMIT 8,1

推荐阅读