EDIT:コードが意図したとおりに動作しているようです。それは単なるデバッグの問題でした。邪魔してごめんなさい!HAVING文のMysql FOUND_ROWS
私はいくつかのフィルタとJOINを含む大規模なクエリを実行しているので、クエリを2回実行していた結果もページングしています。
SQL_CALC_FOUND_ROWS
を使用してクエリを2回実行しないようにしましたが、HAVING
ステートメントでフィルタリングしているので、「ステートメントあり」の前にフィルタされていない合計が表示されます。私はHAVING
を実行する必要があります。なぜなら、元のクエリは数え切れないほどのものに頼っているからです。私はひどいですが、今はDB構造を変更する権限がありません。私の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なくフィルタ1の全額を取得します。 (HAVING
文でのみ発生し、WHERE
の句ではない)
ここでLEFT JOINから何を得ようとしていますか? –
実際のSQLのサンプルSQLでした。私は選択されたより多くの行を、プロファイルからいくつか選択しました。とにかくそれは私の悪かったです。コードは意図したとおりに実行されていた – user982962
あなたは質問プロパティを書くことを気にすることができず、人々はあなたの問題を理解して助けてくれることを期待しています。あなたはすべての人々の中で最悪です! – ant