我有這樣的一個表:選擇行一定的ID
+----------------+------------------------------+
| product_id | product_date_added |
+-----------------------------------------------+
| 2380 | 2012-07-19 00:00:00 |
| 2379 | 2012-07-19 00:00:00 |
| 2376 | 2012-07-19 00:00:00 |
| 2378 | 2012-07-19 00:00:00 |
| 2375 | 2012-07-19 00:00:00 |
| 2370 | 2012-07-19 00:00:00 |
| 2371 | 2012-07-19 00:00:00 |
| 2381 | 2012-07-03 00:00:00 |
| ... | ... |
+----------------+------------------------------+
我需要做的就是找回5行,其中$date <= '2012-07-19 00:00:00'
。然後,我想上傳我的清單,其中有下一個5行,其中$date <= '$Last_Retrieved_Product_Date'
其中$Last_Retrieved_Product_Date
是我檢索的最後一個產品的product_date_added
。
問題是,因爲它們全都有相同的日期(不幸的是它們都沒有小時 - 分鐘 - 秒),所以這個查詢將每次檢索相同的5行。
我試過的是$date < '2012-07-19 00:00:00'
,但是這會跳過,看着我的表格,ids和2371
直接去了2381
。
我也嘗試選擇行,其中$date <= '$Last_Retrieved_Product_Date' AND product_id != 'Last_Product_ID'
但這會讓我第一次檢索2380, 2379, 2376, 2378, 2375
,第二次2379, 2376, 2378, 2375 2370
,所以我仍然會重複。
是否有SQL
聲明,這將使我檢索所有的products_id後的某個值?
例如,我可以按日期排序,然後在$Last_Retrieved_Product_ID
之後選擇5行。
請注意,ID未被排序,這意味着最新的product_date_added
不對應最高的product_id
。
編輯
我沃爾德想有作爲輸出。
首先查詢 SELECT * FROM table Where product_date_added <= '2012-07-19 00:00:00'
輸出:
+----------------+------------------------------+
| product_id | product_date_added |
+-----------------------------------------------+
| 2380 | 2012-07-19 00:00:00 |
| 2379 | 2012-07-19 00:00:00 |
| 2376 | 2012-07-19 00:00:00 |
| 2378 | 2012-07-19 00:00:00 |
| 2375 | 2012-07-19 00:00:00 |
+----------------+------------------------------+
第二個查詢 SELECT * FROM table Where product_date_added <= 'Last_Retrieved_Product_Date'
。
哪裏Last_Retrieved_Product_Date
是行的product_date_added
與product_id = '2375'
輸出所需:
+----------------+------------------------------+
| product_id | product_date_added |
+-----------------------------------------------+
| 2370 | 2012-07-19 00:00:00 |
| 2371 | 2012-07-19 00:00:00 |
| 2381 | 2012-07-03 00:00:00 |
| ... | ... |
+----------------+------------------------------+
實際產出:
+----------------+------------------------------+
| product_id | product_date_added |
+-----------------------------------------------+
| 2380 | 2012-07-19 00:00:00 |
| 2379 | 2012-07-19 00:00:00 |
| 2376 | 2012-07-19 00:00:00 |
| 2378 | 2012-07-19 00:00:00 |
| 2375 | 2012-07-19 00:00:00 |
+----------------+------------------------------+
我使用phpMyAdmin。
你提到了2373,但是你沒有在你的數據中顯示出來:)說實話,我的目光掠過,試圖瞭解你需要的東西。也許向我們展示期望的輸出?並讓我們知道SQL的味道。 – 2013-04-11 09:53:05
有一種方法可以在大多數數據庫中執行top n查詢,但在編寫查詢之前,您必須知道top n的基礎。你似乎還沒有想到。也許你應該問那個給你模糊規範的人。 – 2013-04-11 09:56:04
@MFFuzzyButton你是對的,我的意思是'2381',我編輯了我的問題來展示我期望的和我得到的。 @DanBracuk我想過使用'TOP'(在我的例子中,phpmyadmin,我認爲它是'LIMIT'),但是我怎樣才能在'product_id'值後面選擇'TOP 5'行? – 2013-04-11 10:04:07