SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.06.2009 18:10:07

Руслан Карпук
Участник
Зарегистрирован: 30.06.2009
Сообщений: 1

Нужно выбрать из каждой группы элементов по одному, последнему значению.

Имеется таблица articles:
id | parent_id | headline | text | time

Где parent_id — ID раздела, которому принадлежит статья. Стоит задача из каждого раздела выбрать самую последнюю статью (с самым большим значением поля time). GROUP BY позволяет выбрать только первый элемент из каждого раздела.
Пробовал разные примеры с DISTINCT, которые тут уже обсуждались иногда — не помогло. Т.е. просто запрос: SELECT DISTINCT parent_id FROM articles конечно отработает нормально. Но мне же нужны и другие поля, а так просто дописать список полей после DISTINCT parent_id нельзя, а то DISTINCT распространяется и на них.
Кто может подсказать решение?

Неактивен

 

#2 03.07.2009 02:37:25

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Нужно выбрать из каждой группы элементов по одному, последнему значению.

Часто встречающаяся задача, которая, к сожалению, не имеет хорошего стандартного
решения sad

Попробуйте, например, так:


select a.*
from articles a
join (select parent_id, max(time) as time from articles group by 1) p on (a.parent_id=p.parent_id and a.time = p.time);
 

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson