Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL查询中使用带限制的SELECT时,如何统计所有行?_Mysql - Fatal编程技术网

在MySQL查询中使用带限制的SELECT时,如何统计所有行?

在MySQL查询中使用带限制的SELECT时,如何统计所有行?,mysql,Mysql,我有一个mysql查询,如下所示: SELECT A.ID, A.NAME, B.ID, B.NAME FROM table1 A JOIN table2 B ON ( A.ID = B.TABLE1_ID ) WHERE cond1, cond2, ..., condN LIMIT 10 我在查询中有许多where子句。 如何改进此查询以获得完整的行数? 我不想无限制地再使用一个请求。在执行该查询时,可以使用来计算结果数。基本上,您只需在“SELECT”之后添加“SQL\u CALC

我有一个mysql查询,如下所示:

SELECT A.ID, A.NAME, B.ID, B.NAME
FROM table1 A
JOIN table2 B ON ( A.ID = B.TABLE1_ID )
WHERE
    cond1, cond2, ..., condN
LIMIT 10
我在查询中有许多where子句。 如何改进此查询以获得完整的行数?
我不想无限制地再使用一个请求。

在执行该查询时,可以使用来计算结果数。基本上,您只需在“SELECT”之后添加“SQL\u CALC\u FOUND\u ROWS”,然后运行另一个查询“SELECT FOUND\u ROWS()”。无法在同一查询中发回计数,因为在查询完成之前它无法知道计数。

您要查找的是

来自


自从上次回答以来已经四年了,但我就是这样解决这个问题的。虽然索尔特莱克的回答给我带来了一个错误,但它确实让我找到了正确的答案

SELECT SQL_CALC_FOUND_ROWS * FROM wholedatabase LIMIT 0,10 UNION 
SELECT 'TotalRows', FOUND_ROWS(), NULL, NULL, NULL, NULL
ORDER BY IssueDate, VolumeNo 
联合部分非常重要,因为它将在第二个选择结果中检索到的所需答案(总行数)标记到第一个选择结果上

另一个非常重要的点是,由于正在进行联合,两个表中的列数必须相同。这通常意味着您必须用最重要的FOUND_ROWS()值填充第二个Select,然后填充大量空值

最终结果将是一个命令,返回11行信息,其中一行包含总行数。显然,在使用结果时,需要排除额外的TotalRows行

您应该使用

SELECT SQL_CALC_FOUND_ROWS A.ID, A.NAME, B.ID, B.NAME, FOUND_ROWS() as rCount
FROM table1 A
JOIN table2 B ON ( A.ID = B.TABLE1_ID )
WHERE
    cond1, cond2, ..., condN
LIMIT 10

谢谢这在mysql监视器中运行良好。但是在PHP中,第二个查询返回1。如何在PHP中正确执行这两个查询?您安装了什么PHP版本?请看一看这一重要注意事项:SQL\u CALC\u FOUND\u ROWS在MySQL 8.0中已被弃用,它将在下一版本的MySQL中被删除
SELECT SQL_CALC_FOUND_ROWS * FROM wholedatabase LIMIT 0,10 UNION 
SELECT 'TotalRows', FOUND_ROWS(), NULL, NULL, NULL, NULL
ORDER BY IssueDate, VolumeNo 
SELECT SQL_CALC_FOUND_ROWS A.ID, A.NAME, B.ID, B.NAME, FOUND_ROWS() as rCount
FROM table1 A
JOIN table2 B ON ( A.ID = B.TABLE1_ID )
WHERE
    cond1, cond2, ..., condN
LIMIT 10