【发布时间】:2015-04-02 12:53:52
【问题描述】:
我需要为我的表 Products 创建新列 -> 称为 Order(新列)。并且使用 rails 迁移我需要添加新列并立即设置它的订单号,但这需要通过 product_id 完成。
我的意思是我需要类似的东西:
product_id |顺序
1 ------------> 1
1 ------------> 2
1 ------------> 3
2 ------------> 1
2 ------------> 2
有办法吗?
编辑: 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 15 行的 ''order' = t1.'order'' 附近使用正确的语法:
update product_submissions t
join (
select
id,
product_id,
'order' from (
select id,
product_id,
@rn:= if(@prev = product_id,@rn:=@rn+1,1) as 'order',
@prev:=product_id
from product_submissions,
(select @rn:=0,@prev:=0)r
order by product_id,id
)x
)t1 on t1.id=t.id set t.'order' = t1.'order'
【问题讨论】:
-
您需要添加一些关于您的架构的信息,例如订单、产品及其关系,以及何时设置上述数据等。
-
表中是否有主键?
-
此外,您发布的查询未使用正确的引号。使用反引号将列名括起来。
标签: mysql sql ruby-on-rails migration rails-migrations