当前位置:网站首页>[MySQL] limit implements paging
[MySQL] limit implements paging
2022-07-06 08:47:00 【Charming】
List of articles
Pagination
1. background :
background 1: The query returned too many records , It's inconvenient to check , How to implement paging query ?
background 2: There are 4 Data , If you only want to display 2、3 What about this data ?
2. Implementation rules
Pagination principle
Pagination display , The result set in the database , Show the required conditions paragraph by paragraph .MySQL Use in LIMIT Implement paging
Format :
LIMIT [ Position offset ,] Row number
first “ Position offset ” Parameters indicate MySQL Which line to start with , Is an optional parameter , If you don't specify “ Position offset ”, It will start with the first record in the table ( The position offset of the first record is
0
, The position offset of the second record is1
, And so on ); The second parameter “ Row number ” Indicates the number of records returned .give an example
-- front 10 Bar record :
SELECT * FROM Table name LIMIT 0,10;
perhaps
SELECT * FROM Table name LIMIT 10;
-- The first 11 to 20 Bar record :
SELECT * FROM Table name LIMIT 10,10;
-- The first 21 to 30 Bar record :
SELECT * FROM Table name LIMIT 20,10;
Use limit Realize pagination display of data
demand 1: Each page shows 5 Bar record , The... Is displayed 1 page
SELECT employee_id,last_name
FROM employees
LIMIT 0,5;
- demand 2: Each page shows 6 Bar record , The... Is displayed 2 page
SELECT employee_id,last_name
FROM employees
LIMIT 5,6;
- demand 3: Each page shows 7 Bar record , The... Is displayed 3 page
SELECT employee_id,last_name
FROM employees
LIMIT 6,7;
- demand 4: Each page shows
pageSize
Bar record , The... Is displayedpageNo
page : - The formula :
LIMIT (pageNo-1) * pageSize, pageSize;
- Paging explicit formula :
( The current number of pages -1)* Number of entries per page , Number of entries per page
SELECT * FROM table
LIMIT(PageNo - 1)*PageSize, PageSize;
Be careful :LIMIT Clause must be placed throughout SELECT At the end of the sentence !
Use
LIMIT
The benefits of :
The number of results returned by the constraint canReduce the network transmission of data tables
, It's fine tooImprove query efficiency
. If we know that the return result is only 1 strip , You can useLIMIT 1
, tell SELECT Statement only needs to return a record . The good thing is SELECT There is no need to scan the complete table , You only need to retrieve a qualified record to return .WHERE ... ORDER BY ...LIMIT
The order of declaration is as follows :LIMIT The format of : Strictly speaking :
LIMIT Position offset , Number of entries
structure "
LIMIT 0, Number of entries
" Equivalent to “LIMIT Number of entries
”
SELECT employee_id,last_name,salary
FROM employees
WHERE salary > 6000
ORDER BY salary DESC
#limit 0,10;
LIMIT 10;
- practice : There are 107 Data , If you only want to display 32、33 What about this data ?
SELECT employee_id,last_name
FROM employees
LIMIT 31,2;
MySQL 8.0 Can be used in “LIMIT 3 OFFSET 4”, It means to get from 5 A record starts after 3 Bar record , and “LIMIT 4,3;” The results returned are the same .
MySQL8.0 New characteristics :
LIMIT ... OFFSET ...
practice : There are 107 Data , If you only want to display 32、33 What about this data ?
SELECT employee_id,last_name
FROM employees
LIMIT 2 OFFSET 31;
- practice : Query the information of the highest paid employee in the employee table
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary DESC
#limit 0,1
LIMIT 1;
3. expand
LIMIT It can be used in MySQL、PGSQL、MariaDB、SQLite And so on , Represents paging . Cannot be used in SQL Server、DB2、Oracle in .
In different DBMS The keywords used in may be different . stay MySQL、PostgreSQL、MariaDB and SQLite Use in LIMIT keyword , And it needs to be put in SELECT At the end of the statement .
If it is SQL Server and Access, Need to use
TOP
keyword , such as :
SELECT TOP 5 last_name, employee_id
FROM employees
ORDER BY employee_id DESC
- If it is DB2, Use
FETCH FIRST 5 ROWS ONLY
Such keywords :
SELECT last_name, employee_id
FROM employees
ORDER BY employee_id DESC
FETCH FIRST 5 ROWS ONLY
- If it is Oracle, Need to be based on
ROWNUM
To count the number of lines :
Such as : Before query 10 Bar record
SELECT rownum, employee_id, last_name
FROM employees
where rownum<= 10;
SELECT rownum,last_name,salary
FROM employees
WHERE rownum <= 5 ORDER BY salary DESC;
4. practice
- Check the employee's name, department number and annual salary , In descending order of annual salary , Display by name in ascending order
SELECT last_name,department_id,salary * 12 annual_salary
FROM employees
ORDER BY annual_salary DESC,last_name ASC;
- The choice of salary is not in 8000 To 17000 The name and salary of the employee , In descending order of wages , According to the first 21 To 40 Location data
SELECT last_name,salary
FROM employees
WHERE salary NOT BETWEEN 8000 AND 17000
ORDER BY salary DESC
LIMIT 20,20;
- Query mailbox contains e Employee information , And first by the number of bytes in the mailbox , And then in ascending order by department number
SELECT employee_id,last_name,email,department_id
FROM employees
#where email like '%e%'
WHERE email REGEXP '[e]'
ORDER BY LENGTH(email) DESC,department_id;
边栏推荐
猜你喜欢
随机推荐
ROS compilation calls the third-party dynamic library (xxx.so)
LeetCode:673. 最长递增子序列的个数
Promise 在uniapp的简单使用
Leetcode: Sword Finger offer 42. Somme maximale des sous - tableaux consécutifs
R language ggplot2 visualization, custom ggplot2 visualization image legend background color of legend
sublime text中conda环境中plt.show无法弹出显示图片的问题
JS inheritance method
LeetCode:162. 寻找峰值
ESP8266-RTOS物联网开发
Trying to use is on a network resource that is unavailable
软件卸载时遇到trying to use is on a network resource that is unavailable
C语言深度解剖——C语言关键字
CSP first week of question brushing
MYSQL卸载方法与安装方法
Roguelike游戏成破解重灾区,如何破局?
Sublime text using ctrl+b to run another program without closing other runs
Delay initialization and sealing classes
被破解毁掉的国产游戏之光
电脑清理,删除的系统文件
Leetcode: Sword finger offer 42 Maximum sum of continuous subarrays