我想查询返回结果的顺序有点内外。我有一张客户订单表,我希望检索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中工作,所以使用特定于其他数据库的功能的解决方案没有帮助。
是否sqllite有'LIMIT'的选择吗? – Ariel 2012-08-01 23:39:51
@Ariel我不确定我的答案是针对一般SQL。 – 2012-08-01 23:49:09
@Ariel是的,我打算回答以前有点类似的查询,但不能让sqlfiddle运行这台笔记本电脑,所以无法测试它。 – Fluffeh 2012-08-02 00:07:44