[英]Accessing last N-m records in MySQL
我確實知道如何從表中訪問最后N條記錄,即
SELECT * FROM table_name ORDER BY auto_incremented_id DESC LIMIT N;
有N條記錄,並且表記錄每天都在增加,每條記錄具有從1到N的唯一序列ID。現在我要檢索最近N-10行的10條記錄。
請考慮例子
Record 1
Record 2
Record 3
Record 4
Record 5
Record 6
Record N-M
Record N-2
Record N-1
Record N
如何檢索N-2到NM行
網站所需的解決方案- 第一頁顯示最后10條記錄, 第二頁顯示相反的最后10條記錄,除了第一行中顯示的行,直到表的第一條記錄。
為了動態限制輸出行,您可以使用內聯視圖(因為MySQL不支持使用WITH
子句的常用表表達式)。 示例代碼如下:
SELECT *
FROM (SELECT id, name
, @i := @i + 1 as result
FROM table_name
, (select @i := 0) temp
ORDER BY id) v
CROSS JOIN (SELECT COUNT(id) AS M FROM table_name) w
WHERE result BETWEEN w.m-2 AND w.m;
小提琴 。
您可以玩訂購和您的極限條件
SELECT * from (SELECT * from table_name ORDER BY auto_incremented_id DESC LIMIT N) as temp ORDER BY auto_incremented_id ASC LIMIT M
假設您說的分頁大小為10
第一頁:
SELECT * from as temp ORDER BY auto_incremented_id DESC LIMIT 10;
第二頁:
SELECT * from (SELECT * from table_name ORDER BY auto_incremented_id DESC LIMIT 20) as temp ORDER BY auto_incremented_id ASC LIMIT 10;
第三頁:
SELECT * from (SELECT * from table_name ORDER BY auto_incremented_id DESC LIMIT 30) as temp ORDER BY auto_incremented_id ASC LIMIT 10;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.