私がしたいのは、列を合計するだけでなく、合計する行数を 5 行以下の制限で COUNT することです。だから私のクエリは次のとおりです。
SELECT COUNT(*), SUM(score) FROM answers WHERE user=1 LIMIT 5
私が期待していたのは、最大5 行のスコアの合計で、最大 5 の COUNT(*) でした (回答が 5 未満になる可能性があるため、コード ロジックでは常に 5 になるとは限りません) 。
代わりに、一致する行の総数 (ユーザーが 1 の場合) がカウントとして返され、それらの行のスコアの合計が返されるようです。入れても入れてもLIMIT 1
数字は変わらない。LIMIT 5
LIMIT 50
この状況でうまくいくと私が信じているのは、代わりにこれです
SELECT COUNT(*), SUM(score) FROM (SELECT * FROM answers WHERE user=1 LIMIT 5) AS a
しかし、このような単純なクエリでは少し複雑に思えます。また、トラフィックの多いスクリプトに含まれているため、可能な限りパフォーマンスを向上させたいと考えています。
何か不足していますか?この「問題」に関連していると思われる数年前のバグレポートを見つけましたが、実際にはバグではないと思いますか?