0

同じステートメントでMySQLユーザー定義変数を読み書きすることがどれほど安全でないかについて、私はたくさん読んだことがあります。この使用例は非常に単純に思えますが、他のユーザーの意見を知りたかったのです。

ここに、スコアと重みの表があります。私はランキングを行っているので、スコアで並べ替え、必要な数になるまで重みの現在の合計を計算します。Hibernate を使用しているため、FROM 句で副選択を行うことができません。

SELECT 
    score, weight, @val := score
FROM 
    tmp, (SELECT @runtot := 0) init
HAVING
    (@runtot := @runtot + weight) <= (7)
ORDER BY score;

評価と比較は同じ式の一部であるため、これはかなり安全に思えます。次に、@val は最後に評価されたスコアに設定され、'SELECT @VAL' を実行して最後の値を取得できます。

これはユーザー定義変数の安全な使用法ですか?

4

0 に答える 0