0

我正在尝试根据应用的搜索条件获取记录。一次我只选择 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。我需要这个总数以及其他查询结果。

4

3 回答 3

2

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

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

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

于 2013-08-22T09:43:28.467 回答
0

试试这个查询..

select count(*) as total,userid from users
where name like '%hhh%' 
 group by userid limit 50 offset 0
于 2013-08-22T09:48:36.707 回答
0

MySQL 通过SQL_CALC_FOUND_ROWS选项支持这一点。类似于以下内容:(改编自文档(但未经测试!)):

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM user
-> WHERE name like '%hhh%' LIMIT 50;
mysql> SELECT FOUND_ROWS();
于 2013-08-22T10:01:13.997 回答