2016-06-01 12 views
1

ich eine Tabelle user_places wie diese:wie Anzahl der Werte in MySQL bekommen

user_id recorded_date place_visited 
2  2016-04-05  NY 
2  2016-04-07  UK 
2  2016-04-08  UK 
2  2016-04-08  UK 
3  2016-04-08  AUS 
3  2016-04-09  AUS 
2  2016-04-15  NY 

Ich versuche, die neuesten recorded_date von Benutzern und Namen des Orts zu erhalten, die er am meisten besucht hat.

Antwort

1

Wenn Ihre Daten nicht zu groß ist, dann können Sie diesen Trick in MySQL verwenden:

select user_id, max(dte), 
     substring_index(group_concat(place_visited order by cnt desc), ',', 1) 
from (select user_id, place_visited, count(*) as cnt, max(recorded_date) as dte 
     from user_places 
     group by user_id, place_visited 
    ) upv 
group by user_id; 
+0

Tabellengröße ist mehr als 70k Nutzer. Würde es damit funktionieren? – Prem

+0

Dank @gordon funktioniert es sehr gut. Ich bin nur neugierig, dass meine dB allmählich in einigen Monaten bis zu 150k wachsen würde, wird das dann auch gut funktionieren? – Prem

+0

@Lannister. . . Dies funktioniert gut auf einer 150k Zeilen. Es könnte ein paar Sekunden dauern, aber nicht sehr lange. –

Verwandte Themen