mysql可不可以既返回总的结果数量又limit到指定页面?

3m2u 2008-04-02 08:03:03
因为要搜索一些数据,要么select *

要么就先select count(*) 然后再select limit start,cnt

有没有可能直接limit 还能得到总数?
...全文
505 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒得去死 2008-04-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 SICTXK 的回复:]
引用 6 楼 CAYU 的回复:
select count(*) 在不同的数据库里边运行差别很大的

可以用 select count(id) 这样会快一些
[/Quote]

一样的。
SICTXK 2008-04-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 CAYU 的回复:]
select count(*) 在不同的数据库里边运行差别很大的
[/Quote]
可以用 select count(id) 这样会快一些
jspxnet 2008-04-08
  • 打赏
  • 举报
回复
select count(*) 在不同的数据库里边运行差别很大的
yick77 2008-04-03
  • 打赏
  • 举报
回复
select SQL_CALC_FOUNDED_ROWS * from 'table'..... limit 10;
$total=select FOUND_ROWS();
faisun 2008-04-03
  • 打赏
  • 举报
回复
测试了一下,
在有的情况下,SQL_CALC_FOUND_ROWS 比用 select count(*) 更慢 ...
yangxiao_jiang 2008-04-03
  • 打赏
  • 举报
回复
在很多分页的程序中都这样写:
SELECT COUNT(*) from `table` WHERE ......; 查出符合条件的记录总数
SELECT * FROM `table` WHERE ...... limit M,N; 查询当页要显示的数据
这样的语句可以改成:
SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE ...... limit M, N;
SELECT FOUND_ROWS();
这样只要执行一次较耗时的复杂查询可以同时得到与不带limit同样的记录条数
第二个 SELECT返回一个数字,指示了在没有LIMIT子句的情况下,第一个SELECT返回了多少行 (若上述的 SELECT语句不包括 SQL_CALC_FOUND_ROWS 选项,则使用LIMIT 和不使用时,FOUND_ROWS() 可能会返回不同的结果)。

长知识了,收藏.
faisun 2008-04-03
  • 打赏
  • 举报
回复
是 SQL_CALC_FOUND_ROWS 而不是 SQL_CALC_FOUNDED_ROWS
懒得去死 2008-04-02
  • 打赏
  • 举报
回复
没有。

57,065

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧