带有HAVING语句的Mysql FOUND_ROWS

时间:2016-04-12 12:31:02

标签: php mysql sql-calc-found-rows

编辑:事实证明,代码IS似乎按预期运行。这只是一个调试问题。对不起打扰!

我正在运行一个涉及多个过滤器和JOIN的大型查询,而且我正在对结果进行分页,因此查询运行了两次。

我尝试使用SQL_CALC_FOUND_ROWS来避免两次运行查询,但由于我使用HAVING语句进行过滤,因此在“拥有语句”之前我得到了未经过滤的总数。我需要运行HAVING,因为原始查询依赖于计算内容 - 我知道这很糟糕但我现在没有修改数据库结构的权限。

我的SQL的想法:

SELECT SQL_CALC_FOUND_ROWS u.id as user_id,
               u.full_name as full_name,
               u.email as email,
               COUNT(stuff) as logs,
    FROM
        user u
        LEFT JOIN
        profile u_p on u_p.user_id = u.id 
        GROUP BY u.id 
        HAVING logs>5
    LIMIT 15

当我运行新的SQL查询时 SELECT FOUND_ROWS() as total_rows我获得了u.id ROWS的全部数量而不是已过滤的数量。 (这只发生在HAVING语句中,而不是WHERE子句)

1 个答案:

答案 0 :(得分:0)

事实证明,代码IS似乎按预期运行。这只是一个调试问题。对不起打扰!