如何在MYSQL中统计和限制单个查询中的记录?

2022-08-30 21:59:37

我正在表中搜索记录,如下所示:

SELECT Id, Name FROM my_table WHERE Name LIKE '%prashant%' LIMIT 0, 10;

现在,我正在添加 LIMIT 来维护我的分页。但是当用户搜索单词“prashant”时,我拥有的总记录是“prashant”的124。但是由于限制适用于查询,因此它在我的PHP脚本中仅获取10条记录,并且当我在PHP代码中计算mysql变量时,它返回的总记录是10。

所以基本上我想使用单个查询来计数和限制,通过在上面的查询中进行一些修改,我想要记录的总数(124)。我不想运行单独的 count(*) 查询来计算查询找到的总结果。

谢谢。


答案 1
SELECT SQL_CALC_FOUND_ROWS
  Id, Name
FROM my_table
WHERE
  Name LIKE '%prashant%'
LIMIT 0, 10;

# Find total rows
SELECT FOUND_ROWS();

更多信息


答案 2

MySQL支持使用Ionut提到的SQL_CALC_FOUND_ROWS来做到这一点。但是,事实证明,在许多情况下,使用两个语句以老式方式执行此操作实际上更快,其中一个是 常规 。然而,这确实要求可以使用索引扫描来完成计数,而对于这个查询来说,情况并非如此,但我想我无论如何都会提到它。count()


推荐