簡體   English   中英

在MySQL中訪問最后Nm個記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM