簡體   English   中英

檢索SQL Server表的最后一條記錄

[英]Retrieve last record of SQL Server table

這是我的問題:我有一個名為emp的SQL Server數據庫。 它有一個employee表(帶有userid int列)。 我需要使用遞增的userid值+ 1來檢索employee表中userid的最后一條記錄。此時我在我的GUI上執行了此操作。 那么我該如何為它編寫一個sql查詢呢?

要返回具有最高用戶標識的記錄,您可以執行以下操作:

SELECT TOP 1 userid
FROM employee
ORDER BY userid DESC

要么...

SELECT MAX(userid)
FROM employee

如果您的計划是手動增加用戶ID並插入帶有該新ID的新記錄,我建議不要這樣做 - 如果2個進程同時嘗試這樣做會怎么樣? 而是使用IDENTITY列作為用戶ID,並自動為您處理遞增

您不應手動增加userid列,而是使用IDENTITY列。 這將為每個新行自動添加1。

CREATE TABLE Employees (
    UserId INT IDENTITY PRIMARY KEY NOT NULL,
    UserName NVARCHAR(255) NOT NULL,
    // etc add other columns here
)

如果你真的必須選擇最高的用戶ID,那么這是一個非常簡單的查詢:

SELECT MAX(UserId) + 1
FROM Employees

[編輯]

根據您的注釋,您應該使用SELECT MAX(UserId) + 1 FROM Employees查詢。 但請注意,這並不能保證數字將是ID。 通常,在將記錄保存到數據庫之前,您不會顯示Id值。

這將為您提供最后插入的記錄,如果您沒有Identity列。

EXECUTE ('DECLARE GETLAST CURSOR DYNAMIC FOR SELECT * FROM [User]')
OPEN GETLAST
FETCH LAST FROM GETLAST
CLOSE GETLAST
DEALLOCATE GETLAST

如果您設置了身份,則可以使用以下內容。

SELECT top(1) ID from [YourTable] order by ID desc

要在保存之前擁有新的用戶標識,請創建一個NextId表。

在插入用戶之前,從NextId獲取新值:

UserId = SELECT Coalesce(NextId, 0) + 1 from NextId

然后更新NextID表:

UPDATE NEXTID SET NextId = IserID

然后在您的用戶創建代碼中使用該值

你可以得到差距,有更復雜的方法來避免它們; 但我認為這樣做

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM