我想查詢返回結果的順序有點內外。我有一張客戶訂單表,我希望檢索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