MySQL - 在一个查询中检索许多行并计算受影响的行

时间:2013-07-10 13:15:54

标签: mysql sql

我想用WHERE语句运行一个简单的查询,只返回一些列,如下所示:

SELECT var1, var2 FROM table WHERE key=1

按预期运行并返回许多行。但是,我实际上想要检索所有匹配的行计算受影响的行。但如果我试试这个:

SELECT COUNT(*) AS count, var1, var2 FROM table WHERE key=1

我得到了计数,只有第一行。

是否可以同时获取多行并在一个查询中计算受影响的行?

2 个答案:

答案 0 :(得分:3)

您可以通过子查询来获取总记录数

SELECT var1, var2, 
       (SELECT COUNT(*) FROM tableName WHERE columnName = 1) AS `COUNT`
FROM   tableName
WHERE  columnName = 1

答案 1 :(得分:2)

MySQL有一个专门用于此的工具。将SQL_CALC_FOUND_ROWS添加到您的语句中,如下所示:

SELECT SQL_CALC_FOUND_ROWS var1, var2 FROM table WHERE key=1

然后,您可以使用SELECT FOUND_ROWS()

计算您的点数

此计数会忽略原始陈述中的LIMIT条款!

此外,它必须按顺序执行。如果您等待的时间过长,则另一个SQL_CALC_FOUND_ROWS可能会覆盖您之前的计数。

编辑:抱歉,这不在一个查询中。这比子查询更有效。

P.S。:实际上,为什么不在检索实际计数的数据后简单地计算php中的结果?