Sql server 删除表中的最后一行-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行,那么它就是我要删除的最新条目

我有以下基本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行,那么它就是我要删除的最新条目


如何根据名为
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
子句中的子查询使用表别名。