2013-08-22 65 views
0

我试图根据应用的搜索条件获取记录。我一次只选择50行(用于网页上使用的表格的分页)。但我也需要满足搜索条件的行数(例如1-50 out of <total> records &等)。按结果分组的MySql数

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

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

这里我将获得首批50条记录满足条件,但总的搜索结果可以大于50,我需要与其他查询结果沿着这个总数。

+1

什么你需要通过组?我猜是userid是主键,所以它应该是唯一的... – Sarajog

回答

2

我会使用一个单独的查询:

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

您的查询就会更快,可另50行选择每一次运行,那么你可以一次运行此不再运行查询,以获得总

0

尝试此查询..

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

MySQL支持这跟SQL_CALC_FOUND_ROWS选项。像下面这样:(从文档改编的(但未经测试)!):

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