【发布时间】:2017-08-28 00:42:55
【问题描述】:
目前我正在尝试使用 UPDATE 语句更新局部变量,同时还尝试在变量达到某个值时取消 UPDATE 语句:
UPDATE table
SET @var = @var + 1,
field = @var
WHERE @var < 10
不幸的是,这不起作用,因为它针对所有记录而不是仅 10 条记录运行。有谁知道如何在不使用循环的情况下优雅地解决这个问题? 谢谢!
编辑: 我正在尝试做的是将某种选票分配给政党。假设一个政党获得了总票数的 36.47%。所以我为这个派对计算了 0.47% 的比率(整数部分的切割)。现在,我按比率 DESC 对我的结果表进行排序,只要还有票数,就为每一方添加一票。剩余的投票存储在变量中。这过于简化了,但我希望你能得到我想要做的。
【问题讨论】:
-
实际上你想做什么?示例表数据和更新后的所需输出将有助于快速解决问题
-
您需要将其编写为 WHILE 循环。 stackoverflow.com/questions/753947/…
-
在您的更新代码中,您正在更新整个表格。?这是你想要做的吗?
-
SQL 适用于集合。
UPDATE操作“好像”并行计算所有列值并且并行更新所有行。正如 Shakeer 所说,清楚地了解您正在尝试做什么会有所帮助。
标签: sql sql-server