我有一個表code_prices
看起來是這樣的:給定一個日期查找在MySQL以前和/或當前和下一個x#日期非線性
CODE | DATE | PRICE
ABC | 25-7-2011 | 2.81
ABC | 23-7-2011 | 2.52
ABC | 22-7-2011 | 2.53
ABC | 21-7-2011 | 2.54
ABC | 20-7-2011 | 2.58
ABC | 17-7-2011 | 2.42
ABC | 16-7-2011 | 2.38
與數據集中的問題是有差距在日期,所以我可能想在18日查找物品ABC的價格,但沒有條目,因爲該物品沒有在這個日期出售。所以我想回到最近的價格的hisotrical條目。
說如果我查詢日期19-7-2011,我想返回17日的條目,然後是下10個可用條目。
但如果我查詢農行20日的價格,我希望回到20日之後,未來10種價格價格...
什麼是去最有效的方法這要麼在SQL語句中,要麼使用存儲過程。
我能想到的只是編寫一個存儲過程,將日期作爲參數,然後查詢所有行,其中DATE> = QUERY-DATE按日期排序,然後選擇11個項目(通過限制)。然後,基本上我需要查看該集合是否包含當前日期,如果它返回,否則我需要返回這11箇中最近的10個條目,並且在表格上執行另一個查詢以通過獲取返回前一個條目日期爲< QUERY-DATE的最大日期。我在想可能有更好的辦法,但是我不是SQL專家(很清楚)...
謝謝!
我是否正確地說日期不被排序 - 它們將按照它們的插入順序返回?或者他們應該按降序排列?你能提供一些預期產出的例子嗎? – Mike
你想查詢一個特定的代碼嗎?或者一個查詢所有代碼? –