2014-08-27 58 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