sql:在表格中插入新列
问题描述:
我在管理表中添加了一个新列。我希望将修订列填入effective_date列。sql:在表格中插入新列
ALTER TABLE home.prod ADD revision int;
版本号将从100开始并增加1.修订版本将基于effective_date。所以,最老的eff_date将得到100,然后下一个最老的将得到101,依此类推。
Eff date 1/1/2012 – Revision 100
Eff date 1/1/2013 – Revision 101
Eff date 7/1/2014 – Revision 102
Eff date 1/1/2015 – Revision 103
像本声明中
revision =100
UPDATE prod.admin
SET revision= revision+ 1
WHERE eff_date = /'
答
在MySQL中,你可以做
UPDATE prod.admin
CROSS JOIN (select @rev := 99) r
SET revision = (@rev := @rev + 1)
ORDER BY eff_date asc
答
不幸的是,MySQL不允许JOIN
在UPDATE
查询与ORDER BY
。一种方法是:
SELECT @rn := 99;
UPDATE prod.admin
SET revision = (@rn := @rn + 1)
ORDER BY eff_date ASC;
如果你可以假设@rn
开始与NULL
值,你可以这样做:
UPDATE prod.admin
SET revision = (@rn := COALESCE(@rn, 100), @rn + 1)
ORDER BY eff_date ASC;
在SQL Server中,你会怎么做:
WITH toupdate as (
SELECT a.*, ROW_NUMBER() OVER (ORDER BY eff_date) as seqnum
FROM prod.admin
)
update toupdate
SET revision = seqnum;
哪[标签:rdbms]你在用吗? MySQL或SQL Server? – Mureinik