我有一张这样的表:
+----------------+------------------------------+
| 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 |
| ... | ... |
+----------------+------------------------------+
我需要做的是检索$date <= '2012-07-19 00:00:00'
中的5行。然后,我想上传我的列表,其中包含$date <= '$Last_Retrieved_Product_Date'
其中$Last_Retrieved_Product_Date
,其中product_date_added
是我检索到的最后一个产品的$date < '2012-07-19 00:00:00'
。
问题是,由于它们都具有相同的日期(不幸的是它们都没有小时 - 分钟 - 秒),因此每次查询相同的5行时,此查询将被检索。
我尝试的是2370
,但这会跳过,查看我的表格,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
,所以我仍然会重复。
是否有$Last_Retrieved_Product_ID
语句会让我在某个值后检索所有products_id?
例如,我可以按日期订购表格,然后在product_date_added
之后选择5行。
请注意,这些ID未订购,这意味着最新的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 |
+----------------+------------------------------+
实际输出:
{{1}}
我正在使用PHPMyAdmin。
答案 0 :(得分:1)
我发现使用LIMIT
可以设置上限和下限。所以我只需要这样做:
SELECT * FROM table Where product_date_added <= '2012-07-19 00:00:00' LIMIT 0, 5
进入第二个查询:
SELECT * FROM table Where product_date_added <= '2012-07-19 00:00:00' LIMIT 5, 10
感谢Dan Bracuk提出建议。