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 行を取得することです$date <= '2012-07-19 00:00:00'。次に、最後に取得した製品の次の 5 行$date <= '$Last_Retrieved_Product_Date'を含むリストをアップロードします。$Last_Retrieved_Product_Dateproduct_date_added

問題は、それらはすべて同じ日付を持っているため (残念ながら、すべて時分秒がないため)、このクエリは毎回同じ 5 行を取得することです。

私が試したのは です$date < '2012-07-19 00:00:00'が、これはスキップして、テーブル、ID2370を見て、2371に直行し2381ます。

また、行を選択しようとしましたが、これにより 1 回目、2 回目に$date <= '$Last_Retrieved_Product_Date' AND product_id != 'Last_Product_ID'取得するため、まだ重複があります。2380, 2379, 2376, 2378, 23752379, 2376, 2378, 2375 2370

特定の値の後にすべての products_id を取得するステートメントはありSQLますか?

たとえば、テーブルを日付順に並べてから、$Last_Retrieved_Product_ID.

ID は順序付けされていないことに注意してください。つまり、最新の ID がproduct_date_added最高の 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     |
+----------------+------------------------------+

2 番目のクエリ 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

そして2番目のクエリに:

SELECT * FROM table Where product_date_added <= '2012-07-19 00:00:00' LIMIT 5, 10

提案をしてくれたダン・ブラクックに感謝します。

于 2013-04-11T11:20:20.180 に答える