備註:測試資料庫版本為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...