【发布时间】:2012-03-06 02:35:12
【问题描述】:
我正在尝试计算如果没有设置全局 LIMIT 将返回的总行数。这是我的查询的样子:
SELECT SQL_CALC_FOUND_ROWS * FROM table1 WHERE [...]
UNION
SELECT * FROM table2 WHERE [...]
UNION
SELECT * FROM table3 WHERE [...]
UNION
SELECT * FROM table4 WHERE [...]
LIMIT 0,30
然后我立即使用SELECT FOUND_ROWS() 查询。它总共返回 35 行,但它应该总共返回 400 行。知道如何在不使用 UNION ALL 的情况下计算行数吗?
【问题讨论】:
-
calc_found_rows 在每个查询的基础上工作,当您进行联合时会中断。这实际上是将两个查询合并为一个,您只会得到在联合中执行的最后一个查询的找到的行,而不是整个联合。
-
那么有什么方法可以完成这种查询的行数吗?