2016-06-01 3 views
1

У меня есть таблица user_places так:как получить количество значений в MySQL

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 

Я пытаюсь получить последнюю recorded_date пользователя и имя того места, которое он посетил самое.

ответ

1

Если данные не слишком велики, то вы можете использовать этот трюк в MySQL:

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

размера таблицы больше, чем 70Кб пользователей. Будет ли это работать? – Prem

+0

Спасибо @gordon, он работает очень хорошо. Мне просто любопытно, что мой дБ будет расти постепенно до 150 тыс. Через пару месяцев, это тоже будет хорошо работать? – Prem

+0

@ Lannister. , , Это будет хорошо работать на 150 тыс. Строк. Это может занять несколько секунд, но не очень долго. –

Смежные вопросы