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

MySQL-在一个查询中检索多行并计算受影响的行数,mysql,sql,Mysql,Sql,我想使用WHERE语句运行一个简单查询,只返回一些列,如下所示: SELECT var1, var2 FROM table WHERE key=1 这将按预期运行并返回许多行。但是,我实际上希望检索所有匹配的行并计算受影响的行。但如果我尝试这样做: SELECT COUNT(*) AS count, var1, var2 FROM table WHERE key=1 我得到了计数,只有第一排 是否可以在一个查询中同时获取多行并计算受影响的行数?您可以通过子查询来获取总记录数 SELECT v

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

SELECT var1, var2 FROM table WHERE key=1
这将按预期运行并返回许多行。但是,我实际上希望检索所有匹配的行并计算受影响的行。但如果我尝试这样做:

SELECT COUNT(*) AS count, var1, var2 FROM table WHERE key=1
我得到了计数,只有第一排


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

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

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

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

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

MySQL有一个专门用于此的工具。将
SQL\u CALC\u FOUND\u ROWS
添加到语句中,如下所示:

SELECT SQL_CALC_FOUND_ROWS var1, var2 FROM table WHERE key=1
然后,您可以使用
SELECT FOUND\u ROWS()

此计数忽略原始语句中的
限制
子句

而且,它必须按顺序执行。如果等待时间过长,另一个
SQL\u CALC\u FOUND\u行
可能会覆盖您以前的计数

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


备注:实际上,在您检索实际计数的数据后,为什么不在php中简单地计数()结果呢?

MySQL有一个专门用于此的工具。将
SQL\u CALC\u FOUND\u ROWS
添加到语句中,如下所示:

SELECT SQL_CALC_FOUND_ROWS var1, var2 FROM table WHERE key=1
然后,您可以使用
SELECT FOUND\u ROWS()

此计数忽略原始语句中的
限制
子句

而且,它必须按顺序执行。如果等待时间过长,另一个
SQL\u CALC\u FOUND\u行
可能会覆盖您以前的计数

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

附言:实际上,在您检索实际计数的数据后,为什么不在php中简单地计算()结果呢