Mysql FOUND_ROWS 带有 HAVING 语句

Mysql FOUND_ROWS with HAVING statement

编辑:事实证明,代码似乎是 运行ning 的预期。这只是一个调试问题。不好意思打扰!

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

我尝试使用 SQL_CALC_FOUND_ROWS 来避免 运行 查询两次,但是由于我使用 HAVING 语句进行过滤,所以我在 [= 之前​​得到了未过滤的总数30=]。我需要 运行 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 行,而不是过滤后的行。 (这只发生在 HAVING 语句中,而不是 WHERE 子句)

事实证明,代码 运行 似乎符合预期。这只是一个调试问题。不好意思打扰!