2015-11-24 39 views
-1

我有一個產品系統。每次用戶輸入產品時,我都會在我的數據庫中插入一條記錄。MySQL:如何獲得每個用戶在一個表中的TOP訪問產品?

我有用戶和id_products表,像這樣:

users   id_product 
____________________________ 
jondoe    2 
george    9 
jondoe    5 
jondoe    2 
george    9 
george    9 
george    2 

我需要的結果(查詢)至極說明了什麼是TOP參觀了產品編號爲每個用戶,所以結果會是這樣的:

jondoes most visited product is ID 2 
georges most visitedproduct is ID 9 

我正在尋找答案,但我無法弄清楚。非常感謝您的幫助,我非常感謝。

1月

+1

是否從表GROUP BY用戶選擇*無法正常工作? –

回答

1

這是一個痛苦,因爲它涉及聚合。解決這個問題的一種方法是使用非常複雜的查詢。另一個使用變量。第三種方法使用在許多情況下起作用的聚合技巧:

select user, 
     substring_index(group_concat(id_product order by cnt desc), ',', 1) as mostCommonProduct 
from (select user, id_product, count(*) as cnt 
     from t 
     group by user, id_product 
    ) t 
group by user; 

使用此方法的一個危險是中間結果可能太長。您可以設置group_concat_max_len系統變量來解決該特定問題。

+0

Thans很多戈登,它的工作! –

相關問題