如何使用UNION在查询上实现SQL_CALC_FOUND_ROWS?

时间:2011-01-17 20:44:12

标签: mysql count

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;

1 个答案:

答案 0 :(得分:16)

来自FOUND_ROWS() documentation

  

使用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。

  •   
相关问题