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

使用GROUP BY查询获取行数

花稳
2023-03-14
问题内容

我有一个查询的效果

SELECT t3.id, a,bunch,of,other,stuff FROM t1, t2, t3 
WHERE (associate t1,t2, and t3 with each other) 
GROUP BY t3.id 
LIMIT 10,20

我想知道该查询将返回许多行而没有LIMIT(所以我可以显示分页信息)。

通常,我将使用以下查询:

SELECT COUNT(t3.id) FROM t1, t2, t3 
WHERE (associate t1,t2, and t3 with each other) 
GROUP BY t3.id

但是GROUP BY改变了COUNT的含义,取而代之的是,我得到一组代表每个组中唯一t3.id值的行。

当我使用GROUP
BY时,是否有一种方法可以对行的总数进行计数?我想避免不得不执行整个查询并只计算行数,因为由于分页值,我只需要行的子集。我正在使用MySQL
5,但我认为这很通用。


问题答案:

MySQL中有一个很好的解决方案。

在关键字SELECT之后紧接着添加关键字SQL_CALC_FOUND_ROWS:

SELECT SQL_CALC_FOUND_ROWS t3.id, a,bunch,of,other,stuff FROM t1, t2, t3 
WHERE (associate t1,t2, and t3 with each other) 
GROUP BY t3.id 
LIMIT 10,20

之后,使用函数FOUND_ROWS()运行另一个查询:

SELECT FOUND_ROWS();

它应该返回不带LIMIT子句的行数。

请查看此页面以获取更多信息:http :
//dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-
rows



 类似资料:
  • 我有下面的模式, 学生(名字、姓氏、SID) 已注册(学生ID、课程ID) 课程(CID、课程名称、系) 我需要找出哪些学生上的课比课多。和位位于类别中。我有以下查询,其中列出了所有注册课程的学生以及他们注册了多少课程。 不太确定如何将这个数字与那些注册信息技术课程的人进行比较。

  • 我需要将以下查询转换为hibernate条件查询。请帮忙 由于投票表上的复合主键,我用@Embeddable分隔了主键,所以后面的createQuery不起作用 和可嵌入对象 请建议一个更好的方法。

  • 问题内容: 较早的mysql扩展具有连接标志,但是我找不到 mysqli的 等效项。 我有一个查询,想知道其子句 匹配 了多少行,而不是实际更改了多少(如所示)。 到目前为止,我发现的唯一方法是使用正则表达式进行解析(看起来像)。但这似乎很hack。 问题答案: 在的选项中。 在PHP 5.3中的PDO :: MySQL中也进行了介绍。

  • 预期输出:获取组之间计数为max的结果行,如: 示例2:这个数据帧,我按分组: 对于上面的示例,我希望获取每个组中等于max的所有行,例如:

  • 问题内容: 我有一组数据点(可以稀疏化),它们需要与贝塞尔曲线拟合。我需要速度超过准确性,但合身度应该足够好以至于可以识别。我还在寻找一种我可以使用的算法,该算法没有过多地使用库(特别是NumPy)。 我已经阅读了几篇研究论文,但是都没有足够的细节来全面实施。有开源示例吗? 问题答案: 我有类似的问题,我从Graphics Gems(1990)中找到了有关Bezier曲线拟合的“一种自动拟合数字化

  • 问题内容: 我有一个带有库的IntelliJ项目:Hibernate-entitymanager 4.3.4和JPA 2.0-2.0。使用postgresql-9.3.1100.jdbc4连接到数据库。如何解决? jpa-ql>从ItemEntity中选择ItemEntity.name; 问题答案: 只需阅读文档: http://docs.oracle.com/javaee/7/api/javax