[英]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.