Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > MySQL > Выборка записей по одной штуке |
Автор: Igor_K 23.9.2011, 12:59 |
Здравствуйте. Никак не могу додуматься как такое сделать. Есть таблица user_history , в ней поля user_id, time. time - дата в unix timestamp. Мне нужно получить самые новые записи для каждого пользователя. То есть по одной записи каждого пользователя с наивысшим значением поля time. Не подскажите как составить запрос? Спасибо |
Автор: z-END 23.9.2011, 13:04 |
а простой вариант с GROUP BY user_id и ORDER BY time DESC не поможет? |
Автор: Igor_K 23.9.2011, 13:22 |
z-END, нет, это я уже пробовал. Таким методом только самая первая запись (верхняя) в наборе правильная, а остальные - нет. |
Автор: AndreyIQ 23.9.2011, 13:27 | ||
|
Автор: Igor_K 23.9.2011, 13:50 | ||
AndreyIQ, к сожалению тоже не то. Мне нужно получить всю запись с наивысшим значением time, а не конкретно само значение. В таблице есть другие поля, которые меня и интересуют. Такой запрос работает, но я хочу попроще что-то без подзапросов таких :(
|
Автор: AndreyIQ 23.9.2011, 13:58 | ||
ИМХО только с подзапросом |
Автор: z-END 23.9.2011, 14:02 |
кстати а DISTINCT(user_id) тут тоже не поможет? |
Автор: AndreyIQ 23.9.2011, 14:12 | ||
Нет, DISTINCT обрабатывает все поля выборки. |
Автор: Igor_K 23.9.2011, 14:18 |
А к какому запросу его применить? Я просто не пойму. это плохо.. |
Автор: Akina 23.9.2011, 14:24 |
http://www.sql.ru/forum/actualthread.aspx?tid=687908 |
Автор: Igor_K 23.9.2011, 15:50 | ||||
Akina, спасибо. То, что надо! ![]() Еще вопрос про индекс. Если я использую запрос такой:
то мне нужно составить такой индекс?
|