>  기사  >  데이터 베이스  >  MySQL에서 페이징 작업을 구현하는 방법

MySQL에서 페이징 작업을 구현하는 방법

WBOY
WBOY앞으로
2023-05-30 09:10:225405검색

    1. 배경

    페이징이란 무엇입니까? 쿼리할 때 모든 쿼리 결과를 한 번에 반환하면 네트워크 리소스가 소모되고 사용자가 한 번에 수천 페이지를 읽는 것은 불가능합니다. . 기사 데이터. 그래서 페이징 기술이 탄생했습니다. 페이지 매김은 지정된 양의 데이터만 표시할 수 있습니다.

    2. 구현 규칙

    2.1 키워드 LIMIT

    MySQL에서는 LIMIT 키워드를 사용하여 페이징 작업을 구현합니다. 형식은 다음과 같습니다.

    LIMIT 위치 오프셋, 페이지당 항목 수

    위치 오프셋이 0과 같으면 명령문은 다음과 같이 축약될 수 있습니다.

    LIMIT 페이지당 항목 수; 예시 1 】직원 테이블 에 있는 직원의 <code>employee_id, last_name, salarydepartment_id를 쿼리합니다. 직원 > 정보. 페이지당 20개 항목으로 표시됩니다.

    # 写法一
    SELECT employee_id, last_name, salary
    FROM employees
    LIMIT 0, 20;
    
    # 写法二
    SELECT employee_id, last_name, salary
    FROM employees
    LIMIT 20;
    그 중 LIMIT 다음의 첫 번째 매개변수는 초기 오프셋, 즉 어느 부분부터 표시할지, 두 번째 매개변수는 각 페이지에 표시할 데이터 수입니다.

    employees 中的员工的 employee_idlast_namesalarydepartment_id 信息。并按每页 20 条来显示。

    SELECT employee_id, last_name, salary
    FROM employees
    LIMIT 20, 20;

    其中,LIMIT 后第一个参数是初始偏移量,即从第几条数据开始显示;第二个参数是每页要显示多少条数据。

    显示了员工编号 100~119 的员工。

    【例子2】继续上面的例子1,上面的代码只是显示了第一页的数据,如果现在用户想要显示第2页的数据,应该怎么操作呢?可以使用 LIMIT 后第一个参数是初始偏移量来让数据库从第21条数据 (因为第1条数据的编号为 0 ,所以第20条数据的编号就是20) 开始显示。如下代码所示:

    LIMIT (pageNo - 1) * pageSize, pageSize;

    显示了员工编号 120~139 的员工。

    【总结】总结一个分页的公式,设每页显示的数据个数为 pageSize,当前是第 pageNo 页,那么就有如下 LIMIT 查询公式:

    SELECT employee_id, last_name, salary
    FROM employees
    LIMIT 31, 2;

    2.2 查询数据库表的第 x x x 条记录

    【例子1】查询员工表 employees 中的第 32、33条员工的数据。

    SELECT employee_id, last_name, salary
    FROM employees
    WHERE salary >= 5000
    ORDER BY salary DESC
    LIMIT 0, 10;

    2.3 WHERE…ORDER BY…LIMIT… 的声明顺序 (非执行顺序)

    正确的声明顺序如下代码所示:

    rrreee

    三、 拓展

    MySQL8.0中对于分页新增了一个新特性,对 LIMIT 后增加了偏移量 OFFSET :

    LIMIT 每页条目数 OFFSET 初始偏移量;

    对比一下原有的格式,无非就是把 初始偏移量 和 每页条目数 位置调转一下,然后把逗号去掉即可。

    LIMIT 可以使用在 MySQL、PostgreSQL、MariaDB 和 SQLite 中。LIMIT직원 번호가 100~119인 직원을 표시합니다.

    🎜【예제 2】위의 예시 1에 이어, 위의 코드는 첫 번째 페이지에만 데이터를 표시합니다. 이제 사용자가 두 번째 페이지에 데이터를 표시하려면 어떻게 해야 할까요? LIMIT를 사용할 수 있으며 첫 번째 매개변수는 데이터베이스가 21번째 데이터부터 시작하도록 하는 초기 오프셋입니다(첫 번째 데이터의 개수가 0이므로 20번째의 개수는 데이터는 20) 보여줍니다. 다음 코드와 같이 🎜rrreee🎜 직원 번호가 120~139인 직원을 표시합니다. 🎜🎜[요약] 페이징 수식을 정리하면, 각 페이지에 표시되는 데이터 갯수가 pageSize이고, 현재 페이지가 pageNo라고 가정하면 다음과 같은 LIMIT 쿼리 수식이 있습니다. 🎜rrreee🎜2.2 Query 데이터베이스 테이블 x x x 레코드🎜🎜[예시 1] 직원 테이블 employees에서 32번째, 33번째 직원의 데이터를 쿼리합니다. 🎜rrreee🎜2.3 WHERE…ORDER BY…LIMIT… 선언 순서(비실행 순서)🎜🎜올바른 선언 순서는 다음 코드와 같습니다: 🎜rrreee🎜3.MySQL 8.0에는 페이징을 위한 새로운 기능이 추가되었습니다. , LIMIT 뒤에 오프셋 OFFSET 추가:🎜🎜🎜LIMIT 페이지당 항목 수 OFFSET 초기 오프셋;🎜🎜🎜원래 형식을 비교하세요. 더 이상은 없습니다. 초기 오프셋을 반대로 하고 페이지당 항목 수를 입력하고 쉼표를 제거하세요. 🎜🎜LIMIT는 MySQL, PostgreSQL, MariaDB 및 SQLite에서 사용할 수 있습니다. Oracle, DB2, SQL Server에서는 LIMIT를 사용할 수 없습니다! 🎜

    위 내용은 MySQL에서 페이징 작업을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제