SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 10.06.2011 17:43:37

Igogo
Участник
Зарегистрирован: 10.06.2011
Сообщений: 1

Подскажите плиз=)

Собственно есть таблица сообщений форума и в ней есть "на пример" 3 поля - message_text, message_date, forum_id 
И нужно выбрать ТОЛЬКО ПОСЛЕДНИЕ сообщения из каждого форума.
Возможно ли такое осуществить одним запросом?

Неактивен

 

#2 10.06.2011 21:03:13

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Подскажите плиз=)

Можно.

Например вот так:


CREATE TABLE `t_4369` (
  `message_text` varchar(255),
  `message_date` date,
  `forum_id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

insert into `t_4369` values
 ('mes1','2011-01-01',1)
,('mes2','2011-01-02',2)
,('mes3','2011-01-03',3)
,('mes4','2011-01-04',1)
,('mes5','2011-01-05',2)
,('mes6','2011-01-06',3)
,('mes7','2011-01-07',1)
,('mes8','2011-01-08',2)
,('mes9','2011-01-09',3);

set @i = 0, @forum = 0; select t.* from (select * from `t_4369` order by `forum_id`,`message_date` desc) t where if (@forum=`forum_id`, @i:=@i+1,(@i:=0) or (@forum:=`forum_id`)) and @i<1;
 


Если же хотите без пользовательских переменных, то посмотрите вот этот топик, там разбирался такой же вопрос.

Отредактированно deadka (10.06.2011 21:04:49)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

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