我希望查询返回结果的顺序有点由内而外。我有一张客户订单表,我想检索 N 个最旧的订单来处理,但这样做是为了最大限度地增加正在处理的不同客户的数量。我将其描述为“反排序”,因为排序顺序使得通常彼此相邻的事物尽可能地展开。
CREATE TABLE custorders (
order_id integer PRIMARY KEY,
customer,
data
);
INSERT INTO custorders VALUES
(1,'joe','xyz'),
(2,'joe','abc'),
(3,'joe','def'),
(4,'sam','qwe'),
(5,'sam','rty');
我可以通过以下方式为每个客户获取最旧的订单
SELECT *
FROM custorders
WHERE order_id IN
(
SELECT MIN(order_id) FROM custorders GROUP BY customer
);
但是我一直试图为每个客户获取 2 个最旧的订单,或者(我真正想要的)所有客户的 10 个最旧的订单,以最大限度地增加不同客户的数量。也就是说,如果有 20 个客户,它将给出 10 个不同的客户,但如果只有 8 个不同的客户都有多个挂单,那么结果中会出现 2 个客户多次。
我在 sqlite 3 中工作,因此使用特定于其他数据库的函数的解决方案没有帮助。