下面的查询从一个名为video的表中获取所有结果
SELECT video.* from video
LEFT JOIN conv_progress on video.vid_id=conv_progress.vid_id
LEFT JOIN upload_progress on video.vid_id=upload_progress.vid_id
where conv_progress.vid_id is null
AND upload_progress.vid_id is null
ORDER BY video.timestamp DESC LIMIT ?, ?我只想计算分页使用的总结果。如果我使用rowCount(),当前的limit ?,?会减少我的计数。
SELECT video.*, COUNT(vid_id) as count from video
LEFT JOIN conv_progress on video.vid_id=conv_progress.vid_id
LEFT JOIN upload_progress on video.vid_id=upload_progress.vid_id
where conv_progress.vid_id is null
AND upload_progress.vid_id is null
ORDER BY video.timestamp DESC LIMIT ?, ?',$variables这个查询只返回一个结果,但是返回了一个正确的计数。有人知道我怎么解决这个问题吗?
发布于 2011-08-25 05:48:16
MySQL有一个sql_calc_found_rows扩展,它强制DB引擎计算如果没有limit语句,将检索多少行。然后,您可以在一个单独的查询中使用` `SELECT found_rows()`检索这个整行计数。
父查询的基本语法为:
SELECT sql_calc_found_rows video.* FROM video
...
LIMIT ?,?发布于 2011-08-25 05:56:24
我会简单地计算一下总数:
SELECT count(*) from video
LEFT JOIN conv_progress on video.vid_id=conv_progress.vid_id
LEFT JOIN upload_progress on video.vid_id=upload_progress.vid_id
where conv_progress.vid_id is null
AND upload_progress.vid_id is null然后,从您正在使用的语言中,确定返回的计数和查询限制的行数之间的最小值?参数。在PHP中:
min($query_count,$upper_bound-$lower_bound)https://stackoverflow.com/questions/7182697
复制相似问题