【node sql】如何使用sql实现分页(mysql)

如何使用sql实现分页(mysql)

一:分页需求:

客户端通过传递pagenum(页码),pagesize(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法具体的分析如下:

参数说明

limit m,n  

其中m表示需要查询的页码是从第几条数据开始,但需要注意的是m值是从零开始的,所以我们需要处理传过来的pagenum,即pagenum-1;
其中n表示每页中显示的条数。

简单使用

1.假设我们要查找a表中的是第1页的,每页10条数据,代码如下:

select * from a limit 0,10;

2.假设我们要查找a表中的是第3页的,每页10条数据,代码如下:

select * from a limit 20,10;

3.假设我们要查找a表中的是pagenum页的,每页pagesize条数据,代码如下:

select * from a limit (pagenum-1)*pagesize,pagesize;

实际运用

exports.getActicleList = (req, res) => {

    const sql = `select a.id,a.title,a.pub_date,a.state,b.name as cate_name from ev_articles a,ev_article_cate b where a.cate_id=b.id limit ?,?`

    db.query(sql, [(req.query.pagenum - 1) * req.query.pagesize, req.query.pagesize], (err, results) => {
        if (err) return res.cc(err)

        res.send({
            status: 0,
            message: 'success',
            data: results,
            total: results.length
        })
    })
}

:上面的代码实现的是从两个表中查找关联数据,同时实现分页效果。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现分页,需要以下步骤: 1. 在前端页面中,定义一个分页器,用于显示当前页码、总页数等信息,并提供翻页功能; 2. 在后端代码中,通过 SQL 语句查询数据库中的数据,并根据分页器所提供的参数,返回指定页的数据; 3. 将查询结果返回给前端页面,供分页器进行显示和翻页。 以下是一个使用 Node.js 和 MySQL 实现分页查询的示例代码: ```javascript const express = require('express'); const mysql = require('mysql'); const app = express(); // 创建 MySQL 连接池 const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'database', connectionLimit: 10 }); // 处理分页请求 app.get('/api/list', (req, res) => { const page = parseInt(req.query.page || 1); // 当前页码,默认为 1 const pageSize = parseInt(req.query.pageSize || 10); // 每页显示数量,默认为 10 const start = (page - 1) * pageSize; // 查询起始位置 // 查询总记录数 const countSql = 'SELECT COUNT(*) AS total FROM table'; pool.query(countSql, (err, result) => { if (err) { console.log(err); res.status(500).send('Internal Server Error'); return; } const total = result[0].total; // 总记录数 const pageCount = Math.ceil(total / pageSize); // 总页数 if (page > pageCount) { res.status(404).send('Not Found'); return; } // 查询当前页记录 const listSql = `SELECT * FROM table LIMIT ?,?`; pool.query(listSql, [start, pageSize], (err, result) => { if (err) { console.log(err); res.status(500).send('Internal Server Error'); return; } // 返回结果 res.json({ page, pageSize, pageCount, total, list: result }); }); }); }); app.listen(3000, () => { console.log('Server is running at http://localhost:3000'); }); ``` 在以上示例代码中,我们首先通过 MySQL 连接池创建了一个连接,然后在处理分页请求时,先查询总记录数,计算总页数,再根据当前页码和每页显示数量查询当前页的数据,最后将结果返回给前端页面。注意,在 SQL 语句中我们使用了 LIMIT 关键字来指定查询起始位置和数量,这是实现分页的关键。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值