SQL更新行与计数器

时间:2015-02-26 02:26:51

标签: sql ruby-on-rails

我想知道如何遍历数据库中的每条记录,并使用计数器更新它们。

例如,我有大量的电子邮件字段。我想使用以下模式更新它们:'hello +1@gmail.com','hello +2 @gmail.com','hello +3 @gmail.com','hello+4@gmail.com' ...

我试着在我的Rails控制台中没有SQL的情况下这样做,但这需要花费太多时间。有关如何使用SQL执行此操作的任何建议吗?

2 个答案:

答案 0 :(得分:0)

如果您使用的是SQL Server:

select <stuff>
       ,row_number() over (order by <something>) as row_number
from <things>
where <something>

会做的伎俩。如果没有,请告诉我们你在使用什么,我们可以从那里开始!你想把@ + Row_number放在@之前吗?如果是这样的话,将'@'替换为'+ 4 @'依旧应该是一件相当简单的事情。

答案 1 :(得分:0)

在MySQL中,您将使用变量:

update table t
    set email = concat('hello+', @rn := coalesce(@rn, 0) + 1, '@gmail.com');

如果您有特定的排序,可以添加order by子句。