admin

使用LIMIT时SQL计数总行数

sql

我正在尝试创建一个简单的图像库,每页显示16张图像。我使用LIMIT
16在页面上显示正确的数量,但是如果行数超过16,我想在底部显示链接,以允许用户导航到下一页。

我知道我可以通过删除限制并简单地使用循环来显示前16个项目来达到期望的结果,但是这样效率很低。显然,COUNTING行数总是= 16。

$sql .= "posts p, images im, postimages pi WHERE
    i.active = 1 
    AND pi.post_id = p.id
    AND pi.image_id = im.image_id 
    ORDER BY created_at LIMIT 16";

有人可以建议一种更有效的方法吗?

谢谢


阅读 162

收藏
2021-05-10

共1个答案

admin

除了要获取其他人都提到的计数的单独查询之外,您还需要抵消给定页面上的结果。

$sql .= "posts p, images im, postimages pi WHERE
    i.active = 1 
    AND pi.post_id = p.id
    AND pi.image_id = im.image_id 
    ORDER BY created_at 
    LIMIT ". ($page - 1) * $pagesize .", ". $pagesize;

有关SQL注入的常规警告将在此处适用。

2021-05-10