如何使用SQL Server函数从表中获取最大PK。若表并没有数据,它应该返回1
我已经在SQL Server中编写了一个函数来获取id的最大值,以便可以使用它进行排序如何使用SQL Server函数从表中获取最大PK。若表并没有数据,它应该返回1,sql,sql-server,database,sql-server-2008,tsql,Sql,Sql Server,Database,Sql Server 2008,Tsql,我已经在SQL Server中编写了一个函数来获取id的最大值,以便可以使用它进行排序 create function dbo.DQ_ACC_PROCESS_EXEC_MASTER_SK() returns bigint as begin declare @MAX_PK as BIGINT; select @MAX_PK = max(Process_ID) + 1 from dbo.DQ_ACC_PROCESS_EXEC_SUMMARY_LOG retur
create function dbo.DQ_ACC_PROCESS_EXEC_MASTER_SK()
returns bigint
as
begin
declare @MAX_PK as BIGINT;
select @MAX_PK = max(Process_ID) + 1
from dbo.DQ_ACC_PROCESS_EXEC_SUMMARY_LOG
return @MAX_PK;
end;
对于第一次运行,表将没有任何值,因此尽管我使用+1,但它不会给我1作为返回结果
我还尝试了使用ISNULL(进程ID,1)
和案例,当进程ID为null时,则为0,否则进程ID结束
。我还尝试了COALESCE
。结果没有一个返回1
你能帮忙吗。我不熟悉SQL Server。请尝试以下查询
select @MAX_PK=ISNULL(max(Process_ID),0)+1
from dbo.DQ_ACC_PROCESS_EXEC_SUMMARY_LOG
如果表没有数据,它将返回
1
,否则将返回下一个Process\u ID
1)这对多个连接不起作用(正确),2)这类函数是SQL的性能止动器,3)有“从盒子中取出来”的解决方案可以很好地工作:IDENTITY,SEQUENCEProcess\u ID是IDENTITY?