私がしたいのは、SUMですが、加算する行の数はCOUNT、制限は5行までです。だから私のクエリは次のとおりです。私は戻って予想何LIMIT付きMySQLカウント
SELECT COUNT(*), SUM(score) FROM answers WHERE user=1 LIMIT 5
は、COUNT(*)5まで(私はちょうどそれが5つの未満の答えを持っている可能性があるので、それは常に私のコードのロジックで5になりますと仮定カント)、としましたのスコアの合計は 5行までです。
代わりに、私が戻ってくるように見えるのは、カウントとして一致する行の合計数(ユーザーが1の場合)と、それらの行のスコアの合計です。数字は私がLIMIT 1またはLIMIT 5を置くかどうかを変更したりしても、私はこのような状況で動作すると信じて何50
を制限いけない、この代わりに
SELECT COUNT(*), SUM(score) FROM (SELECT * FROM answers WHERE user=1 LIMIT 5) AS a
あるしかし、それは、そのような単純なクエリのために少し複雑なようですそれはトラフィックの多いスクリプトの中にあるので、できるだけパフォーマンスを上げるのが難しいです。
私に何か不足していますか?私は数年前からこの "問題" http://bugs.mysql.com/bug.php?id=50005に関連するように思われるこのバグ報告を見つけましたが、実際にはバグではないと仮定していますか?
'LIMIT 5 'は多くとも5つの行を返します。 'SELECT COUNT(*)、SUM(score)FROM answers'は1行を返します。 1 <5.あなたは2番目のクエリで正しいです。 –
YP @ ta.speot.is、私はちょっと愚かなことをしていないことを確認する誰かが必要だと思う。私は必要なものを行うためのより簡単なクエリがあったとは断言できましたが、明らかにそうではありませんでした。 – Lee
ネストされたクエリで 'select * 'の代わりに' select 1'を使用すると、理論的にメモリ使用量が少なくなります –