1

我有一张这样的桌子:

+----------------+------------------------------+
|   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 行 where $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 23702371直接去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.

请注意,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_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     |
+----------------+------------------------------+

我正在使用 PHPMyAdmin。

4

1 回答 1

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的建议。

于 2013-04-11T11:20:20.180 回答