2014-08-27 48 views
0

基本上,正如问题所述,我正在寻找基于唯一值获取计数的最简单和最直接的方法。MYSQL忽略重复值并获取唯一计数

这里是我的数据集:

id | item_id | user_id 
1 | 10  | 123 
2 | 10  | 123 
3 | 10  | 123 
4 | 11  | 123 
5 | 12  | 123 
6 | 10  | 456 
7 | 10  | 789 
8 | 12  | 456 

理想的情况下,当我运行的查询我应该得到以下几点:

count | user_id 
3  | 123 
2  | 456 
1  | 789 

在哪里,即使用户123有5项的名称,真的只购买了3件独特的物品。这真的很简单,我完全错过了吗?以下是我目前有:

SELECT count(user_id) AS count, item_id, user_id 
FROM table 
GROUP BY item_id, user_id 
HAVING count > 1 
ORDER BY count DESC 

这是生产的我想的正好相反:提前

count | user_id 
5  | 123 
2  | 456 
1  | 789 

谢谢!如果已经得到回答,请指出我的方向。

回答

1

你可以指望不同的项目ID,然后组由用户ID:

SELECT 
    COUNT(DISTINCT item_id) AS count, 
    user_id 
FROM 
    event_assigned 
GROUP BY 
    user_id 
ORDER BY 
    count DESC