Возможно ли сделать одним запросом

SerB

Новичок
Возможно ли сделать одним запросом

Есть таблица `posts` (
`id` int(10) unsigned NOT NULL auto_increment,
`razdel_id` tinyint(4) NOT NULL,
`author` varchar(50) NOT NULL,
`body` text,
`active` tinyint(1) NOT NULL default '0',
`vote` tinyint(4) NOT NULL,
`created` datetime default NULL,
PRIMARY KEY (`id`)
)

Задача выбрать для каждого раздела (razdel_id) по одной записи с максимальным id
Если просто сгрупировать по razdel_id получаем по одной записи с мин. id (select * from `posts` group by `razdel_id`), возможно ли решить задачу одним запросом?
 

Фанат

oncle terrible
Команда форума
не с мин. id, а со неопределенным id

можно попробовать приджойнить таблицу к самой себе по max(id)
 

SerB

Новичок
Что-то типа такого?
SELECT max(`t1`.`id`) as `mid`,`t1`.`razdel_id`,`t1`.`body` FROM `posts` `t1` inner join `posts` `t2` on `t1`.`mid`=`t2`.`id` GROUP BY `t1`.`razdel_id`

Ругается Unknown column 't1.mid' in 'on clause', как правильно записать?
 

dr-sm

Новичок
select t.id, t.razdel_id, t.body from posts t
inner join (запрос который выбирает множество [для каждого раздела (razdel_id) по одной записи с максимальным id] ) tt on tt.id = t.id
 

zerkms

TDD infected
Команда форума
вопрос задаётся на форуме раз в месяц.
в поиск.
 

SerB

Новичок
Спасибо за помощь. Нашел варианты решения тут (http://www.sql.ru/forum/actualthread.aspx?tid=687908)
 
Сверху