当前位置:网站首页>[MySQL] limit implements paging

[MySQL] limit implements paging

2022-07-06 08:47:00 Charming

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 is 1, 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;

 Insert picture description here

  • demand 2: Each page shows 6 Bar record , The... Is displayed 2 page
SELECT employee_id,last_name
FROM employees
LIMIT 5,6;

 Insert picture description here

  • demand 3: Each page shows 7 Bar record , The... Is displayed 3 page
SELECT employee_id,last_name
FROM employees
LIMIT 6,7;

 Insert picture description here

  • demand 4: Each page shows pageSize Bar record , The... Is displayed pageNo 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 can Reduce the network transmission of data tables , It's fine too Improve query efficiency . If we know that the return result is only 1 strip , You can use LIMIT 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;

 Insert picture description here

  • 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;

 Insert picture description here

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;

 Insert picture description here

  • 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;

 Insert picture description here

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;

 Insert picture description here

SELECT rownum,last_name,salary 
FROM employees 
WHERE rownum <= 5 ORDER BY salary DESC;

4. practice

  1. 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;

 Insert picture description here

  1. 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;

 Insert picture description here

  1. 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;

 Insert picture description here

原网站

版权声明
本文为[Charming]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202131813003799.html