Microsoft SQL Server:如何从任意范围获取下一个可用整数
我需要在Microsoft SQL Server中将数据从一个表迁移到另一个表。当迁移到新表时,我想为某一列指定范围为0-127的下一个可用整数 一个基本的实施是:Microsoft SQL Server:如何从任意范围获取下一个可用整数,sql,sql-server,Sql,Sql Server,我需要在Microsoft SQL Server中将数据从一个表迁移到另一个表。当迁移到新表时,我想为某一列指定范围为0-127的下一个可用整数 一个基本的实施是: 插入表格(columnName)从表格中选择MAX(columnName)+1 然而,这并不涉及0-127的任意范围。如何将操作限制在此范围内 我还要补充一点,我不想在这里使用标识插入,即使它可能有意义 编辑:获取0-127值后,它应该循环并重新开始。您显示的查询将为每条记录插入下一个数字 您想要的是使用row_number()+M
插入表格(columnName)从表格中选择MAX(columnName)+1
然而,这并不涉及0-127的任意范围。如何将操作限制在此范围内
我还要补充一点,我不想在这里使用标识插入,即使它可能有意义
编辑:获取0-127值后,它应该循环并重新开始。您显示的查询将为每条记录插入下一个数字 您想要的是使用row_number()+MAX(columnName) 编辑:为了将数字限制在指定的最大值,在这一点上回到起点,你可以这样做,即使我不认为这有什么用处:
case when (row_number() over(columnName) + max(columnName)) > 127
then (row_number() over(columnName) + max(columnName)) % 127
else row_number() over(columnName) + max(columnName)
end
提示:
identity
列。不使用identity-我将编辑问题以澄清这一点。对不起!然后使用BTWMAX(columnName)+1
将很容易返回重复的值,例如,如果删除了最大记录,那么如果表中需要迁移的行超过128行,会发生什么情况?