【发布时间】:2015-03-08 14:24:21
【问题描述】:
我想了解如何在更新列时按特定顺序(而不是随机或按创建记录的顺序)处理表行。
为了说明我的问题,在下面的虚构示例中,我想根据 date_time 设置排名,以便首先处理较旧的记录(并获得较低的排名)。
create table #testTable (customer_id char(20), ranking int, date_time
Datetime, pk_value int identity )
go
insert into #testTable (customer_id, date_time) values
('MICROSOFT', '20110202')
insert into #testTable (customer_id, date_time) values
('MICROSOFT', '20120202')
insert into #testTable (customer_id, date_time) values
('MICROSOFT', '20090512')
go
declare @Rank int
set @Rank = 0
update #testTable set @Rank = @Rank + 1, ranking = @Rank
【问题讨论】:
-
您应该使用您正在使用的数据库标记您的问题。从语法上,我推测是SQL Server。
-
你总是可以做
UPDATE table SET column="value" WHERE foo = bar ORDER BY any_column; -
@GordonLinoff 是的,你是对的,我的意思是 SQL Server。下次我会做的。
-
@IfediOkonkwo 感谢您的建议。当我尝试您的语法时,我收到错误“ORDER 附近的语法不正确”
-
@Hidalgo 是否可以发布您的代码,其中出现“语法错误”错误?
标签: sql sql-server tsql sql-update