如何用LIMIT计算行数?


9

我想捕获X行,因此,我设置了LIMIT X;但是我又如何同时计算总行数呢?

目前,我使用两个单独的查询来执行以下操作:

SELECT COUNT(*) FROM col WHERE CLAUSE
SELECT * FROM col WHERE CLAUSE LIMIT X

有没有办法在一个查询中做到这一点?

编辑:输出应为col单元格和行数。实际上,在选择了col单元格之后,它应该遍历表格进行计数。

我知道不可能合并这两个查询,因为第一个返回1行,但是第二个返回X行。我很好奇mysql中是否有一个函数在存在时返回行数LIMIT


您能显示所需输出的一两行吗?
dezso 2012年

1
这两个查询目前不兼容,因为它们是当前编写的:一个返回具有单列的单个记录,另一个查询将返回X行中的许多列。如果您希望我们提供有意义的答案,请显示所需输出的示例。
FrustratedWithFormsDesigner 2012年

Answers:


5

听起来您想运行LIMIT,但仍然知道如果没有LIMIT,将返回多少行。查看FOROW ROWS


1
为此+1 FOUND ROWS,虽然它仍在执行两个查询,但它可能比运行第二个COUNT(*)查询(取决于查询和数据集)更好。
德里克·唐尼

这就是我的意思。我知道,mysql在如此重要的问题上,我们不会孤单;)
Googlebot

1
很高兴会有所帮助。不用担心,mysql仍然会在一些重要问题上给您带来麻烦。
阿兰·柯林斯

@DTest:或(可能)比运行第二个COUNT(*)查询更差的性能。
ypercubeᵀᴹ

@ypercube恰好
Derek Downey

3

使用SQL_CALC_FOUND_ROWS你的SELECT查询,然后运行SELECT FOUND_ROWS()

SELECT SQL_CALC_FOUND_ROWS field_name,filed_name2 FROM col WHERE CLAUSE LIMIT X;
SELECT FOUND_ROWS() ;

1
这将得益于一些清理工作和更多细节,以使其更有用。
RLF

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.