我在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)
但它显示语法错误。任何人都帮助我
答案 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表中创建一个自动递增的列,这样您就可以在现有记录的末尾进行插入。