在子查询中使用SQL_CALC_FOUND_ROWS

时间:2011-09-06 02:35:14

标签: mysql

我发现MySQL返回

Incorrect usage/placement of 'SQL_CALC_FOUND_ROWS'
如果我将SQL_CALC_FOUND_ROWS放在子查询

中,则会出现

错误

SELECT
  *
FROM
  (
     SELECT SQL_CALC_FOUND_ROWS * FROM test_table
  ) as T1

有解决方法吗?或者我只是错误地实施它?

编辑:有一个原因,我需要让T1成为子查询以防万一有人想知道。

1 个答案:

答案 0 :(得分:1)

好像你正在使用它不正确。 SQL_CALC_ROWS_FOUND似乎只适用于外部查询。我不确定这是否适合您的用例,或者您的外部查询中是否有其他WHERE,但您可以执行以下操作:

  

选择     SQL_CALC_FOUND_ROWS *   从     (        SELECT * FROM test_table     )作为T1;
  SELECT FOUND_ROWS();

FOUND_ROWS()函数将为您提供在应用LIMIT之前找到的总行数。有关FOUND_ROWS()检查here

的更多信息