获取一个值并在sql server中插入该值的增量

时间:2014-05-05 07:01:46

标签: sql-server

我在SQL SERver中有一个名为T_ACCOUNT的表,其中2列ACCOUNT_ID和CUSTOMER_ID都作为int。 现在我必须读取该表的最后一行并插入一个新行,其中最后一行的值递增1。 我怎么能这样做?

我试过这个

SELECT ACCOUNT_ID,CUSTOMER_ID FROM T_ACCOUNT order by ACCOUNT_ID desc
INSERT T_ACCOUNT(ACCOUNT_ID,CUSTOMER_ID)
VALUES(ACCOUNT_ID = ACCOUNT_ID + 1 AND CUSTOMER_ID = CUSTOMER_ID +1)  

但它显示语法错误。任何人都帮助我

3 个答案:

答案 0 :(得分:1)

以下语句选取最后一行(记录为max account_id)并插入下一行。

INSERT INTO  T_ACCOUNT (ACCOUNT_ID,CUSTOMER_ID)
SELECT ACCOUNT_ID + 1, CUSTOMER_ID +1 
FROM T_ACCOUNT
Where ACCOUNT_ID = (select max(ACCOUNT_ID) from T_ACCOUNT)

where子句用于选择最后一行。

答案 1 :(得分:0)

一个非常奇怪的要求,但无论如何这就是你要做的事情......

INSERT INTO  T_ACCOUNT (ACCOUNT_ID,CUSTOMER_ID)
SELECT TOP 1 ACCOUNT_ID + 1, CUSTOMER_ID +1 
FROM T_ACCOUNT
ORDER BY  ACCOUNT_ID desc

此处的排序与此无关,不需要。

您应该创建一个存储过程来执行此操作,创建两个output参数以获取新创建的值。如下所示

CREATE PROCEDURE dbo.Add_Record
@ACCOUNT_ID   INT OUTPUT,
@CUSTOMER_ID  INT OUTPUT
AS
BEGIN
 SET NOCOUNT ON;
  DECLARE @AccountID INT, @CustomerID INT;

  SELECT TOP 1  @AccountID   = ACCOUNT_ID
               ,@CUSTOMER_ID = CUSTOMER_ID
  FROM T_ACCOUNT
  ORDER BY ACCOUNT_ID DESC;

  SET @AccountID   = @AccountID + 1;
  SET @CUSTOMER_ID = @CUSTOMER_ID + 1;

  INSERT INTO T_ACCOUNT (ACCOUNT_ID,CUSTOMER_ID)
  VALUES (@AccountID, @CUSTOMER_ID)

END

答案 2 :(得分:0)

您应该考虑在sql表中创建一个自动递增的列,这样您就可以在现有记录的末尾进行插入。