1
我必須選擇在每個類別最高紀錄,像MySQL的:選擇各組最好的,但不重複
ID| Category_Id | Item_Id | Price
1 | 1 | 1 | 10
2 | 1 | 1 | 7
3 | 1 | 2 | 8
4 | 1 | 2 | 5
5 | 2 | 1 | 9
6 | 2 | 1 | 6
7 | 2 | 2 | 3
8 | 2 | 2 | 8
9 | 3 | 1 | 5
SELECT * FROM (
SELECT * FROM `products` ORDER BY price DESC
) AS r GROUP BY category_id
至於結果,我得到:
ID | CATEGORY_ID | ITEM_ID | PRICE
1 | 1 | 1 | 10
5 | 2 | 1 | 9
9 | 3 | 1 | 5
我不得不修改查詢僅返回唯一的ITEM_ID。例如,如果爲類別1選擇了項目1,則不能爲類別2選擇。因此,應爲其選擇下一個匹配項目。所以我應該得到:
ID | CATEGORY_ID | ITEM_ID | PRICE
1 | 1 | 1 | 10
8 | 2 | 2 | 8
9 | 3 | 1 | 5
類別#3只包含一個項目#1,它在之前用於類別#1。但複雜性是我們不能跳過任何類別。所以如果沒有ids離開,它必須開始使用已經使用的項目ID。
誰能幫忙?
UPD:好的,我發現它太複雜。可能是我可以簡化我的問題,那麼選擇非重複的項目ID,並不打擾跳過的類別?例如:
ID | CATEGORY_ID | ITEM_ID | PRICE
1 | 1 | 1 | 10
8 | 2 | 2 | 8
9 | 3 | 1 | 5
下面是一個例子:http://sqlfiddle.com/#!2/1c7f7/1/0我不不瞭解如何查詢預期結果,所以我沒有任何東西可以作爲我嘗試的例子。預期的結果出現在上一個代碼塊中。 – WindBridges
我認爲你應該擴大你的樣本數據,以涵蓋category_id 4必須使用item_id 3的情況,因爲item_id 1和2已經被category_id 1和2所佔用。噢,我認爲它不能輕易解決僅SQL。考慮應用層的解決方案。 – fancyPants
較大的數據集和預期的結果樣本可能有助於此。我認爲item_id的規則是最不清楚的。也許可以解釋你正在努力完成什麼? –