相关疑难解决方法(0)

没有ORDER BY的SQL Server 2005 ROW_NUMBER()

我试图从一个表插入另一个表使用

DECLARE @IDOffset int;
SELECT @IDOffset = MAX(ISNULL(ID,0)) FROM TargetTable

INSERT INTO TargetTable(ID, FIELD)
SELECT [Increment] + @IDOffset ,FeildValue
FROM SourceTable
WHERE [somecondition]
Run Code Online (Sandbox Code Playgroud)

TargetTable.ID不是标识列,这就是为什么我必须找到一种自己增加它的方法.

我知道我可以使用游标,或者创建一个带有标识列和FieldValue字段的表变量,填充它,然后在我的中使用它insert into...select,但这不是很有效.我尝试使用ROW_NUMBER函数来递增,但我在SourceTable中确实没有合法的ORDER BY字段可以使用,并且希望保留SourceTable的原始顺序(如果可能).

谁能提出任何建议?

sql t-sql sql-server sql-server-2005 auto-increment

29
推荐指数
1
解决办法
5万
查看次数

使用Row_Number()选择行的子集

Select id, name, ROW_NUMBER() OVER (ORDER BY id asc) as 'RowNo'
from customers
where RowNo between 50 AND 60
Run Code Online (Sandbox Code Playgroud)

我试图选择50到60之间的行的子集.问题是'RowNo'是无效的列名.

谢谢

使用SQL SERVER 2008 R2

sql database row-number sql-server-2008-r2

4
推荐指数
2
解决办法
2万
查看次数