Помогите составить MYSQL запрос

Программирование, которое не связано с API и Flash.

Помогите составить MYSQL запрос

Сообщение Богдан » 19 май 2014, 00:45

Добрый вечер! Есть таблица в формате:

id | type | body
================
1 | 3 | text
2 | 2 | text
3 | 3 | text
4 | 1 | text
5 | 2 | text
6 | 2 | text

То есть одна колонка с типом записи (int 1-3), другая с текстом. Как вытащить последнюю запись для каждого type? То есть последнюю для type = 1, type = 2, type = 3 одним запросом?

Из примера таблицы нужно вытащить id 6,4,3 (три уникальных типа, сортированных по id)
Аватара пользователя
Богдан

 
Автор темы
Сообщения: 21
Зарегистрирован: 26 дек 2010, 05:22
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Помогите составить MYSQL запрос

Сообщение Serge » 19 май 2014, 07:51

  1. SELECT id FROM table_name WHERE 1 GROUP BY type ORDER BY id DESC

если не спасет, то так:
  1. SELECT MAX( id ) AS id FROM table_name WHERE 1 GROUP BY type ORDER BY id DESC

хотя, по идее, первый запрос тоже самое должен выдать.
http://sevenlines.com.ua - разработка и продвижение сайтов

За это сообщение автора Serge поблагодарил:
Богдан
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Помогите составить MYSQL запрос

Сообщение Богдан » 20 май 2014, 01:57

Этим запросом выводит последнюю запись. Пытался как-то скомбинировать distinct с type in, но оказалось что distinct только один столбик выводит. :(
Аватара пользователя
Богдан

 
Автор темы
Сообщения: 21
Зарегистрирован: 26 дек 2010, 05:22
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.

Re: Помогите составить MYSQL запрос

Сообщение Serge » 20 май 2014, 06:18

Богдан
  1. --
  2. -- Структура таблицы `test`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `test` (
  6.   `id` int(11) NOT NULL AUTO_INCREMENT,
  7.   `type` int(11) NOT NULL DEFAULT '0',
  8.   `body` varchar(255) DEFAULT NULL,
  9.   PRIMARY KEY (`id`)
  10. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
  11.  
  12. --
  13. -- Дамп данных таблицы `test`
  14. --
  15.  
  16. INSERT INTO `test` (`id`, `type`, `body`) VALUES
  17. (1, 3, 'some text #1'),
  18. (2, 2, 'some text #2'),
  19. (3, 3, 'some text #3'),
  20. (4, 1, 'some text #4'),
  21. (5, 2, 'some text #5'),
  22. (6, 2, 'some text #6');
  23.  


  1. SELECT MAX( id ) AS id, body
  2. FROM test
  3. WHERE 1
  4. GROUP BY TYPE ORDER BY id DESC


id По убыванию body
6 some text #2
4 some text #4
3 some text #1
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.


Вернуться в Программирование на PHP и других языках (без использования API)



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0