当前位置: 首页 > 面试题库 >

SQL:使用LIMIT查询时计算匹配结果的数量

谭畅
2023-03-14
问题内容

假设users我的MySQL DB中的表包含大量条目。

我需要遍历所有用户,但是我想一次仅执行大块操作(即使用LIMITOFFSET):

SELECT * FROM users LIMIT 100 OFFSET 200

是否有可能知道查询中匹配的用户总数,但仅返回LIMIT个用户?

换句话说,是否可以在不进行单独查询的情况下提前知道用户总数?


问题答案:

您可以使用SQL_CALC_FOUND_ROWSFOUND_ROWS()在(几乎)一个查询中进行操作:

SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 100 OFFSET 200;
SELECT FOUND_ROWS();

尽管您仍然有两个结果集,但实际查询仅执行一次,从而避免了重复编码和可能浪费的CPU周期。



 类似资料:
  • 问题内容: 我正在使用Codeigniter执行分页功能,但我认为这通常适用于PHP / mySQL编码。 我正在使用offset和limit检索目录列表,具体取决于每页要多少结果。但是要知道所需的总页数,我需要知道(结果总数)/(限制)。现在,我正在考虑第二次运行SQL查询,然后计算所需的行数,但不使用LIMIT。但是我认为这似乎是在浪费计算资源。 有没有更好的方法?谢谢! 编辑:我的SQL查询

  • 我应该用什么来替换'code TO VERIFY IF QUERY RESULT ROW IS=1'? 我用num_rows尝试了很多种方法,但都行不通。 我的PHP代码:

  • 问题内容: 我正在尝试创建一个简单的图像库,每页显示16张图像。我使用LIMIT 16在页面上显示正确的数量,但是如果行数超过16,我想在底部显示链接,以允许用户导航到下一页。 我知道我可以通过删除限制并简单地使用循环来显示前16个项目来达到期望的结果,但是这样效率很低。显然,COUNTING行数总是= 16。 有人可以建议一种更有效的方法吗? 谢谢 问题答案: 除了要获取其他人都提到的计数的单独

  • 我使用Twittertypeahead.js搜索名单的名字和客户端希望根据名字的建议。 有没有一个选项可以让Twittertypeahead.js搜索查询与每个结果的开头相匹配,而不是字符串中的任何位置? 我可以在函数中看到一个变量,但是我不知道如何将其指定为一个选项,甚至不知道这是否与我试图实现的目标有关。 在我的项目中调用typeahead的jQuery函数是: 我可以看到来自的响应格式 所以

  • 问题内容: 因此,我一直在尝试在查询中生成一些SQL随机数,但发现有些奇怪。 假设我运行以下查询: SQL随机数gen有点笨重,但是这里的基本思想很简单-选择1到5之间的随机数,然后将该数字作为文本显示在选择窗口中。这按预期工作。 但是,如果我使用SAME查询,而是将随机数公式粘贴到方法中,而不是将其声明为整数,那么它们全都在一行上: 运行查询时,我仍然获得值1到5,但是有时我也得到NULL。NU

  • 问题内容: 我有这样的查询: 上述查询^中的结果数为10行。现在,我想知道如何在此查询中获取总结果数: 如何计算此^中所有结果的数量 (与无关)? 其实我想要这个数字: 现在,我想知道如何在没有其他查询的情况下获得总结果数。 问题答案: 添加一列,例如: 如 @Tim Biegeleisen所述 : 关键字在所有其他内容之后应用,因此仍然返回正确的答案。