問題タブ [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.

0 投票する
1 に答える
247 参照

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.idROWS が取得されます。(これはHAVING文でのみ発生し、WHERE句では発生しません)

0 投票する
1 に答える
294 参照

mysql - 関数 FOUND_ROWS() を使用して結合で間違った結果を返す問題

これは私の質問です。

承認された結果はtotal:344、私が得ていると述べられてtotal:1います。

このクエリを実行しましたが、正しい結果が得られています。

total:1313

私は何が間違っていますか?参考までに、クエリを中断することはできません。つまり、最初に実行します

SQL_CALC_FOUND_ROWS を選択

そして実行

FOUND_ROWS() を選択

ひどく助けが必要..

編集

クエリを変更し、count(*) 関数を使用しました。今、私は正しいtotal:344を取得していますが、1 行しか返されません。誰かが私を導くことができますか?

要件の変更により、MSSQLクエリをMYSQlに変換する必要があるため、COUNT(*) OVER()を使用してMSSQLでクエリを実行しています。私はこのようにこれを受け入れている結果これ

0 投票する
2 に答える
40 参照

sql - 計算フィールドの後に値が正しく返されない

実行後、返される結果は次のとおりです。

代わりに返すべきものは

複数の結合テストの後、最初は結合にエラーがあると思っていましたが、同じエラー結果になりました。

SQLフィドル

SQLFiddle_2

SQLFiddle_3

複数の ID を持っているため、Group By を使用していることを明確にするSQLFiddle_2

SQLFiddle_3をさらに展開します。

SQLFiddle_3 で実行した後、返される結果は次のとおりです。

あるべき姿は