【问题标题】:How to use COUNT properly with pagination in php?如何在 php 中正确使用 COUNT 和分页?
【发布时间】:2011-11-19 08:16:24
【问题描述】:

这就是我当前的查询设置:

SELECT * , (    
SELECT COUNT( * ) 
FROM paintings
WHERE id > 4000
) AS total
FROM paintings
WHERE id > 4000
LIMIT 0 , 30

如果我将查询分开,一切正常,但如果我保持这样,分页显示页面末尾缺少 1 个 id。

对于选择不在每一行而是在整体上返回的计数,有什么更好的选择?

例如:如果我在 mysql 中传递它,这就是我目前得到的:

> +--------+------------+--------+ > |编号 |标题 |计数 | > +--------+------------+--------+ > |第2345章水| 25 | > |第2346章面包| 25 | > |第2347章可乐| 25 | > |第2348章啤酒 | 25 | > |第2349章橘子| 高分辨率照片| CLIPARTO 25 | > +--------+------------+--------+

干杯!

【问题讨论】:

标签: php mysql pagination


【解决方案1】:

除了创世纪发布的内容。仍然是 2 个查询,但更简洁:

# The main query
SELECT SQL_CALC_FOUND_ROWS * FROM paintings
WHERE id > 4000
LIMIT 0, 30;

# And after get the total
SELECT FOUND_ROWS() AS total;

【讨论】:

    【解决方案2】:

    没有,按照你的方式。只需运行 2 个查询

    SELECT 
         *
    FROM 
         paintings
    WHERE 
         id >4000
    LIMIT 
         0 , 30;
    
    SELECT 
        COUNT( * ) as total
    FROM 
        paintings
    WHERE 
        id >4000
    

    【讨论】:

    • 是的,简单明了!
    • 如果你把它们放在一个存储过程中,你只需要和数据库对话一次!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 2019-03-21
    相关资源
    最近更新 更多