0

我已经阅读了很多关于在同一语句中读/写 MySQL 用户定义变量的不安全性。这个用例看起来很简单,但我想看看其他人的想法。

在这里,我有一个带有分数和重量的表格。我正在做一个排名,所以我按分数排序并计算权重的总和,直到我得到我想要的数字。因为我使用的是 Hibernate,所以我不能在 FROM 子句中进行子选择。

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

这似乎相当安全,因为 eval 和 comparison 是同一表达式的一部分。然后@val 将被设置为评估的最后一个分数,我可以做一个'SELECT @VAL'来获得最后一个值。

这是对用户定义变量的安全使用吗?

4

0 回答 0