獲得組的前x個記錄我有一個商店的產品表。這些產品具有valid_from和valid_to日期。在我的查詢中,我想只有當前有效的每個商店的第一個x記錄,按上一次插入desc排序。Mysql:通過
我目前使用下面的查詢:
SELECT * FROM
(
SELECT
s.id as shopid, ss.name as shopname, p.name as productname, p.validfrom, p.validto
FROM
product p
JOIN
shop s ON p.shopid = s.id
WHERE
s.status = 'Active' AND
(now() BETWEEN p.validfrom and p.validto)
ORDER BY p.insert DESC
) as a
GROUP BY
shopid
ORDER BY
shopname asc
這顯然只是給了我各店的最新記錄,但我希望能有最新的2分或3的記錄。我怎樣才能做到這一點?
獎勵問題:我想每個商店有所不同。所以對於商店A,我只想要第一條記錄,而商店B是第一條記錄。您可能會認爲每個擁有此號碼的商店都有一些數據庫字段,例如s.num_of_records。
類似的問題(可能重複)讓我在正確的方向,但它不能完全解決我的問題(見最新評論)
[在GROUP BY中使用LIMIT獲得每個組的N個結果?](http://stackoverflow.com/questions/2129693/using-limit-within-group-by-to-get-n-results -per-group) – e4c5
不完全一樣,但類似的問題讓我朝着正確的方向,謝謝。我現在使用: 'code' @currcount:= IF(@currvalue = s.id,@currcount + 1,1)等級 @currvalue:= s.id AS lastshopid 'code' 要使爲同一家商店排名,但這並不總是以某種方式工作。一些商店有正確的排名,其他排名都是1。任何線索可能是錯誤的?我正在通過shopid訂購。 – MNL
你的MySQL版本是什麼? –