选择某个ID后的行

时间:2013-04-11 09:34:02

标签: sql phpmyadmin sql-order-by

我有一张这样的表:

+----------------+------------------------------+
|   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 23712381直接转到$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_addedproduct_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。

1 个答案:

答案 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提出建议。