0

名前の付いたテーブルと名前の付いtbl_Questionた列があり、INT_MARK質問ごとに異なるマークがあります。このような:

VH_QUESTION     INT_MARK
-----------     --------
Q1              2
Q2              4

私の質問は: マークの合計が 50 である 20 の質問のランダムなセットを取得する方法は?

4

4 に答える 4

1
select VH_QUESTION, sum(INT_MARK) from tbl_Question
 group by VH_QUESTION
having sum(INT_MARK) > 50 
order by rand() limit 1
于 2012-11-20T05:23:01.687 に答える
0

この質問はあなたを助けるかもしれないと思います-非常によく似た問題のようです。

それでもうまくいかない場合は、問題を2つに分けてみます。最初に、質問を組み合わせて作成します。次に、ポイントの合計でそれらをフィルタリングします。

しかし、テーブルのすべての組み合わせを作成する方法を見つけることができませんでした。それがどれほど難しいかわかりません。

于 2012-11-20T05:22:29.610 に答える
0
select VH_QUESTION, sum(INT_MARK) from tbl_Question
group by VH_QUESTION
having sum(INT_MARK) >= 50 
order by rand() limit 20
于 2012-11-20T05:24:52.913 に答える
0

素早い回答

SELECT * ,SUM(INT_MARK) as total_mark FROM tbl_Question  
GROUP BY VH_QUESTION
HAVING total_mark="50"
ORDER BY RAND()
LIMIT 5

答えがない場合は0行を返しますが、質問が見つかるたびにランダムです。

ベンチマークをチェックして、大きなテーブルのクエリを高速化できるかどうかを確認できます。

于 2012-11-20T05:55:31.063 に答える