問題タブ [sql-calc-found-rows]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - HAVINGステートメントを使用したMysql FOUND_ROWS
編集: 結局のところ、コードは意図したとおりに実行されているようです。それは単なるデバッグの問題でした。邪魔してごめんなさい!
複数のフィルターと JOIN を含む大規模なクエリを実行しています。また、結果をページ分割しているため、クエリが 2 回実行されていました。
SQL_CALC_FOUND_ROWS
クエリを 2 回実行しないように使用しようとしましたが、HAVING
ステートメントでフィルタリングしているため、「having ステートメント」の前にフィルター処理されていない合計を取得しています。元のクエリはカウントに依存しているため、実行する必要がありHAVING
ます。これはひどいことですが、現在、DB構造を変更する権限がありません。
私のSQLのアイデア:
新しい SQL クエリ
SELECT FOUND_ROWS() as total_rows
を実行すると、フィルタリングされたものではなく、全量のu.id
ROWS が取得されます。(これはHAVING
文でのみ発生し、WHERE
句では発生しません)
mysql - 関数 FOUND_ROWS() を使用して結合で間違った結果を返す問題
これは私の質問です。
承認された結果はtotal:344
、私が得ていると述べられてtotal:1
います。
このクエリを実行しましたが、正しい結果が得られています。
total:1313
私は何が間違っていますか?参考までに、クエリを中断することはできません。つまり、最初に実行します
SQL_CALC_FOUND_ROWS を選択
そして実行
FOUND_ROWS() を選択
ひどく助けが必要..
編集
クエリを変更し、count(*) 関数を使用しました。今、私は正しいtotal:344を取得していますが、1 行しか返されません。誰かが私を導くことができますか?
要件の変更により、MSSQLクエリをMYSQlに変換する必要があるため、COUNT(*) OVER()を使用してMSSQLでクエリを実行しています。私はこのようにこれを受け入れている結果
sql - 計算フィールドの後に値が正しく返されない
実行後、返される結果は次のとおりです。
代わりに返すべきものは
複数の結合テストの後、最初は結合にエラーがあると思っていましたが、同じエラー結果になりました。
複数の ID を持っているため、Group By を使用していることを明確にするSQLFiddle_2
SQLFiddle_3をさらに展開します。
SQLFiddle_3 で実行した後、返される結果は次のとおりです。
あるべき姿は