mysql 結果集換頁 MySQL 按結果集分頁

2021-10-19 03:11:30 字數 1822 閱讀 8061

備註:測試資料庫版本為mysql 8.0

一.需求

給結果集分頁或滾動顯示整個結果集

二.解決方案

在sql中,由於沒有「第乙個」、「最後乙個」及「下乙個」的概念,所以必須對要處理的行按某種方式排序,只有如此,才會準確地返回一定範圍內記錄。

-- mysql limit offset解決方案

-- offset表示跳過幾行

select sal

from emp

order by sal

limit 5 offset 0

select sal

from emp

order by sal

limit 5 offset 5

-- mysql 8.0 分析函式解決方案

select sal

from (

select row_number() over (order by sal) as rn,

salfrom emp

) xwhere rn between 1 and 5;

select sal

from (

select row_number() over (order by sal) as rn,

salfrom emp

) xwhere rn between 6 and 10;

測試記錄

mysql> select sal

-> from emp

-> order by sal

-> limit 5 offset 0

| sal |

| 800.00 |

| 950.00 |

| 1100.00 |

| 1250.00 |

| 1250.00 |

5 rows in set (0.00 sec)

mysql> select sal

-> from emp

-> order by sal

-> limit 5 offset 5

| sal |

| 1300.00 |

| 1500.00 |

| 1600.00 |

| 2450.00 |

| 2850.00 |

5 rows in set (0.00 sec)

mysql>

mysql> select sal

-> from (

-> select row_number() over (order by sal) as rn,

-> sal

-> from emp

-> ) x

-> where rn between 1 and 5;

| sal |

| 800.00 |

| 950.00 |

| 1100.00 |

| 1250.00 |

| 1250.00 |

5 rows in set (0.00 sec)

mysql> select sal

-> from (

-> select row_number() over (order by sal) as rn,

-> sal

-> from emp

-> ) x

-> where rn between 6 and 10;

| sal |

| 1300.00 |

| 1500.00 |

| 1600.00 |

| 2450.00 |

| 2850.00 |

5 rows in set (0.00 sec)

mysql 結果集 MySQL結果集處理

問題 1.mysql對查詢的結果集如果返回,一次性還是每條?2.客戶端如何接收結果集?1.對於有返回結果集的查詢,server端和client端互動的資料報由以下組成 p1 meta data packet p2 rows packet pn 1 rows packet pn eof or erro...

利用mysql游標迴圈結果集

很多時候自己新增測試資料會用到mysql程式設計,其中儲存過程就非常的重要,所以在這裡寫乙個返回使用者id號用逗號拼接的例子 現在發現mysql完全可以程式設計,一門徹底的程式語言,資料型別還是強型別的,我喜歡 use test delimiter create procedure pro8 out...

mysql結果集ResultSet列別名

今天碰到乙個mysql結果集別名顯示異常的問題 resultsetmetadata.getcolumnname 和 resultsetmetadata.getcolumnlabel的區別 簡單的講就是 對於查詢語句select cd.id client data id from dual來說 res...