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
子句)
事实证明,代码 运行 似乎符合预期。这只是一个调试问题。不好意思打扰!
编辑:事实证明,代码似乎是 运行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
子句)
事实证明,代码 运行 似乎符合预期。这只是一个调试问题。不好意思打扰!