EDIT: Как оказалось, кажется, что код работает так, как предполагалось. Это была просто проблема отладки. Извините за беспокойство!Mysql FOUND_ROWS с заявлением HAVING
Я запускаю большой запрос, который включает в себя несколько фильтров и JOINs, а также я разбиваю страницы на результаты, поэтому запрос выполнялся дважды.
Я попытался использовать 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
Ряды и не фильтрованный один. (Это происходит только с оператором HAVING
, а не в предложении WHERE
)
Что вы пытаетесь получить от 'LEFT JOIN' здесь? –
это был просто пример SQL в реальном SQL. У меня есть намного больше выбранных строк, некоторые из профиля. Так или иначе, это было плохо. Код был запущен, как предполагалось, – user982962
, вы даже не можете написать свойство вопроса, и вы ожидаете, что люди поймут вашу проблему и помогут вам в этом. Ты самый худший из всех людей! – ant