我有一個應用程序可以跟蹤各種產品的價格。對於任何特定產品,價格在任何一天的任何時間都可能會發生變化,並且不會定期更改。有一個PriceHistory表格記錄了產品的所有價格隨時間變化的記錄。應用程序用戶可以選擇時間和日期,並查看當時的價格。我使用的是這樣的查詢,以獲得「當前」所有產品的價格在任何給定的日期和時間:MySQL查詢在給定日期時間之前獲取兩條最新記錄
SELECT A.*
FROM `PriceHistory` A
INNER JOIN (
SELECT `BrandKey`, `LocationKey`, `ProductKey`, max(`EffectiveDateTime`) AS MaxUpdateDate
FROM `PriceHistory`
WHERE `EffectiveDateTime` <= '2010-02-22 12:00:00'
GROUP BY `BrandKey`, `LocationKey`, `ProductKey`
) AS B ON
A.`BrandKey` = B.`BrandKey`
AND A.`LocationKey` = B.`LocationKey`
AND A.`ProductKey` = B.`ProductKey`
AND A.`EffectiveDateTime` = B.MaxUpdateDate
現在我需要能夠向用戶展示價格多少變化時價格開始生效。所以我需要爲選定的時間獲取兩個最近的價格而不是一個。我很難過。我已經嘗試了幾件事情,並且我只是收到SQL錯誤,因爲我嘗試的連接不合法。任何幫助,將不勝感激。
我可以遍歷所有的產品,並得到最近的兩個價格,但是這需要大約10秒350級的產品75000個的價格行。我不一定需要在一個查詢中使用所有產品,但對每個產品運行查詢的速度不夠快。
這隻會給我兩行。我有大約350種產品,所以我正在尋找700行或350行的產品。我編輯了我的問題,使其更清晰一些。 – 2010-02-22 20:43:48