Sql server MS SQL存在子句问题

Sql server MS SQL存在子句问题,sql-server,Sql Server,我有两个专栏 Item | Category Apple Fruit Orange Fruit Potatoes Vegetables 所需输出: 果 我试图得到数量最高的类别的名称,即水果。我写了一个MySql查询,它在MySql上工作。但同样的查询会在MS SQL Server上引发错误。任何暗示都将不胜感激 select Cat from (select count(category) as Total,category as cat from test

我有两个专栏

Item    |   Category

Apple      Fruit
Orange     Fruit
Potatoes   Vegetables
所需输出:

我试图得到数量最高的类别的名称,即水果。我写了一个MySql查询,它在MySql上工作。但同样的查询会在MS SQL Server上引发错误。任何暗示都将不胜感激

select Cat from (select count(category) as Total,category as cat from test group by category) as S1 group by S1.Total,S1.Cat having max(s1.total)
运行此操作时,我得到一个空结果。但我创建的类似查询在MySql上运行良好:

SELECT s2.cats FROM (SELECT s1.cat AS cats, max(s1.counts) AS countings FROM (SELECT count(category) AS counts, category AS cat from test GROUP BY category) AS s1) AS s2
我得到的错误信息是:Msg 4145,15级,状态1,第1行 在预期条件的上下文中指定的非布尔类型的表达式,靠近''


我想避免使用像这样的TOP

吗?很难看,但不穿上衣。此外,将返回具有最大计数的所有项,而不仅仅是任意项

假设表[食品]具有列类别:

select category from Food group by Category having COUNT(*) = 
(select max(cnt) from (select COUNT(*) as cnt from Food group by Category) subq)

您应该发布错误消息。