SQL Max函数的问题:"语法不正确新关键字' SELECT' "

时间:2015-03-19 14:57:42

标签: sql sql-server

我试图编写一个存储过程来返回列+ 1的最大值但由于某种原因它不想工作。

DECLARE @ID int;

SET @ID = SELECT MAX(ID) + 1 FROM tbl;

我不能为我的生活看到错误。

它给了我错误:

  

错误的语法新关键字' SELECT'

4 个答案:

答案 0 :(得分:4)

无需SET。直接选择值:

DECLARE @ID int;
SELECT @ID = MAX(ID) + 1 FROM tbl;

答案 1 :(得分:3)

使用括号( ... )

DECLARE @ID int;
SET @ID = (SELECT MAX(ID) + 1 FROM tbl);

SELECTsuggested by GiorgiSET是为变量赋值的ANSI标准方法,SELECT不是。除了使用SELECT将值分配给变量之外,还可以使用一个SELECT进行多次分配。

但一般来说,你的查询似乎是竞争条件。如果要自动增量值,请使用IDENTITY columnAuto increment primary key in SQL Server Management Studio 2012

答案 2 :(得分:2)

当表中没有值且MAX返回NULL时,您需要考虑一个场景。

DECLARE @ID int;

SELECT @ID = ISNULL(MAX(ID) , 0) + 1 FROM tbl;

将null添加到null将始终产生null。

答案 3 :(得分:1)

DECLARE @ID int;
SET @ID = (SELECT MAX(ID) + 1 FROM tbl);

括号运算符()

了解更多信息

https://msdn.microsoft.com/en-us/library/ms190276.aspx