Mysql,我使用SQL_CALC_FOUND_ROWS来获取可能记录的总数。
如何在UNION上使用它?
现在唯一对我有用的东西是:
SELECT COUNT(*)
FROM(SELECT * FROM t1 UNION SELECT * FROM t2) A;
或
SELECT SQL_CALC_FOUND_ROWS *
FROM(SELECT * FROM t1 UNION SELECT * FROM t2) A;
答案 0 :(得分:16)
使用SQL_CALC_FOUND_ROWS和 FOUND_ROWS()对于UNION来说更复杂 语句比简单的SELECT 声明,因为LIMIT可能发生在 UNION中的多个位置。它可能是 适用于个人SELECT UNION中的语句,或者全局的语句 UNION的整体结果。
SQL_CALC_FOUND_ROWS的意图 UNION是它应该返回行 计数将返回没有 全球限制。使用条件 带UNION的SQL_CALC_FOUND_ROWS是:
SQL_CALC_FOUND_ROWS关键字必须 出现在第一个SELECT中 UNION。
FOUND_ROWS()的值是准确的 仅在使用UNION ALL时。如果是UNION 没有使用ALL,重复删除 发生和FOUND_ROWS()的值 只是近似的。
如果UNION中没有LIMIT, SQL_CALC_FOUND_ROWS被忽略并且 返回的行数 创建的临时表 处理UNION。