2011-06-20 59 views
0

我必须使用名为“类别”和“用户”的表格 我在某些类别下插入用户表中的记录, 现在我想要最大用户注册的订单类别。根据最高记录获取最高排名

样品表;

类别:

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
SELECT 
    * 
FROM 
    Category 
ORDER BY 
    (SELECT COUNT(*) FROM Users WHERE CategoryId = Category.CategoryId) DESC 


或者,一些perfer这一点,虽然我不...

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 
0
select count(CategoryId) as rank, CategoryId 
from users group by Categoryid order by rank desc 
+1

排名并不靠前的类别没有用户 – MatBailie

+0

+1:好点。 –