SQL中的函数限制无法正常工作

SQL中的函数限制无法正常工作,sql,sql-server,greatest-n-per-group,Sql,Sql Server,Greatest N Per Group,我正在尝试从用户处获取最新条目,并使用以下语句: SELECT [username] ,[Name] ,[Surname] ,[Email] ,[Phone] ,[Mobile] ,[Query] FROM [ECom].[dbo].[Queries] ORDER BY [ECom].[dbo].[Queries].[username] DESC LIMIT 1 我得到以下错误: Msg 102,15级,状态1,第1

我正在尝试从用户处获取最新条目,并使用以下语句:

    SELECT [username]
      ,[Name]
      ,[Surname]
      ,[Email]
      ,[Phone]
      ,[Mobile]
,[Query]

  FROM [ECom].[dbo].[Queries]
  ORDER BY [ECom].[dbo].[Queries].[username] DESC LIMIT 1
我得到以下错误:

Msg 102,15级,状态1,第12行 “LIMIT”附近的语法不正确

PS:我也在这样尝试,但错误不断出现:

 SELECT [username]
      ,[Name]
      ,[Surname]
      ,[Email]
      ,[Phone]
      ,[Mobile]
,[Query]

  FROM [ECom].[dbo].[Queries]
  ORDER BY [username] DESC LIMIT 1

错误消息表明您正在运行SQL Server,标识符周围使用方括号也是如此

limit
在SQL Server中不是一件易事。相反,请使用
top

SELECT TOP (1) [username]
     ,[Name]
     ,[Surname]
     ,[Email]
     ,[Phone]
     ,[Mobile]
     ,[Query]
FROM [ECom].[dbo].[Queries]
ORDER BY [username] DESC 
启动SQL Server 2012时,可以使用
fetch
子句,这是标准的ANSI SQL(尽管它没有在MySQL中实现…):

如果您想要每个用户的最后一条记录,那么这是一个不同的问题。一个选项使用窗口功能:

select *
from (
    select q.*, row_number over(partition by username order by ?? desc) rn 
    from ecom.dbo.queries q
) q
where rn = 1
??
应替换为定义每个用户行顺序的列的名称

您也可以使用
fetch
top
执行此操作,但您需要将窗口函数置于
order by
子句中:

select top (1) with ties q.*
from ecom.dbo.queries q
order by row_number over(partition by username order by ?? desc) rn 

代码是sqlserver,它具有TOP而不是limit。(错误消息也是sqlserver)但这只显示一条记录,我想显示每条记录的最后一条记录user@Burdy:这在你最初的问题中一点也不清楚。。。应该使用哪一列来订购每个用户的记录?很抱歉,必须使用的列是用户名,因为我想从每个用户处获取最新的查询username@Burdy. 编辑后的答案就是这样。如前所述,您只需选择正确的列对记录进行排序。
select top (1) with ties q.*
from ecom.dbo.queries q
order by row_number over(partition by username order by ?? desc) rn