根据最高记录获取最高行

时间:2011-06-20 09:49:14

标签: sql-server sql-server-2005

我必须将表命名为“Category”和“Users” 我在某些类别下的用户表中插入记录, 现在我想要最大用户注册的订单类别。

样本表;

类别:

CategoryId  Name
1           Category1
2           Category2
3           Category3

用户:

UserId      Name       CategoryId
1           User1           1
2           User2           2
3           User3           2
4           User4           2
5           User5           3

现在在上面的示例中,CategoryId 2包含3个用户 所以我想把CategoryId 2名称放在最上面。

感谢名单

2 个答案:

答案 0 :(得分:2)

SELECT
  *
FROM
  Category
ORDER BY
  (SELECT COUNT(*) FROM Users WHERE CategoryId = Category.CategoryId) DESC


或者,正如一些人更喜欢这个,虽然我没有......

SELECT
  Category.CategoryId,
  Category.Name
FROM
  Category
LEFT JOIN
  Users
    ON Users.CategoryId = Category.CategoryId
GROUP BY
  Category.CategoryId,
  Category.Name
ORDER BY
  COUNT(Users.CategoryID) DESC

答案 1 :(得分:0)

select count(CategoryId) as rank, CategoryId 
from users group by Categoryid order by rank desc