编辑:事实证明,代码似乎正在按预期运行。这只是一个调试问题。不好意思,打扰了!
我正在运行一个涉及多个过滤器和 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
子句中)