按结果分组的MySql数

时间:2013-08-22 09:39:07

标签: mysql sql

我正在尝试根据应用的搜索条件获取记录。我只选择了50行(用于网页上使用的表的分页)。但我还需要满足搜索条件的total行数(以显示1-50 out of <total> records等等)。

以下查询按用户ID给我记录组。

select * from user 
group by userid
where name like '%hhh%' 
limit 50 offset 0

在这里,我将获得满足条件的前50条记录,但总搜索结果可能大于50.我需要此总计数以及其他查询结果。

3 个答案:

答案 0 :(得分:2)

我会使用单独的查询:

select count(*) from user
group by userid
where name like '%hhh%'

您的查询会更快,并且每次选择另外50行时都可以运行,然后您可以运行此更长时间运行的查询一次,以获得总数

答案 1 :(得分:0)

尝试此查询..

select count(*) as total,userid from users
where name like '%hhh%' 
 group by userid limit 50 offset 0

答案 2 :(得分:0)

MySQL使用SQL_CALC_FOUND_ROWS选项支持此功能。类似于以下内容:(从文档中改编(但未经测试!):

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM user
-> WHERE name like '%hhh%' LIMIT 50;
mysql> SELECT FOUND_ROWS();