Sql server 删除表中的最后一行-SQL
我有以下基本SQL查询:Sql server 删除表中的最后一行-SQL,sql-server,Sql Server,我有以下基本SQL查询: DELETE TOP (1) FROM dbo.userPasswordHistory WHERE UserId IN (SELECT Id FROM dbo.user WHERE LogonId = @UserLogonId) 我想删除dbo中最新的条目。userPasswordHistory表,但delete TOP(1)正在删除最旧的条目,而不是最近的条目。例如,如果dbo.userPasswordHistory表包含指定用户的5行,那么它就是我要删除的最新条目
DELETE TOP (1)
FROM dbo.userPasswordHistory
WHERE UserId IN (SELECT Id FROM dbo.user WHERE LogonId = @UserLogonId)
我想删除dbo中最新的条目。userPasswordHistory
表,但delete TOP(1)
正在删除最旧的条目,而不是最近的条目。例如,如果dbo.userPasswordHistory
表包含指定用户的5行,那么它就是我要删除的最新条目
如何根据名为
LastModifiedTime
的列对表进行排序,或者是否有一种方法可以指定bottom或last?您可以使用子查询或CTE进行排序:
DELETE t
FROM (SELECT TOP (1) uph.*
FROM dbo.userPasswordHistory uph
WHERE UserId IN (SELECT Id
FROM dbo.user
WHERE LogonId = @UserLogonId
)
ORDER BY LastModifiedTime DESC
) t;
包括适当的标签。Top不是mysql关键字。您的查询来自mysql或sql server,并使用示例数据和所需结果集更新您的问题谢谢这正是我要找的。然而,“t”表示什么?我知道它是必需的,因为如果没有该语句,它将不会执行。@bez91。
t
是一个表别名。SQL Server要求在from
子句中的子查询使用表别名。