SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 26.08.2008 15:44:50

Aco
Участник
Откуда: СПб
Зарегистрирован: 30.04.2008
Сообщений: 10

Выборка поледнего элемента из группы

Дана таблица с данными

Код:

id type data
1    1    ...
2    1    ...
3    1    ...
4    2    ...
5    2    ... 
6    3    ... 
7    4    ...

Задача одим наименее трудоёмким запросом выбрать элементы с id 3, 5, 6, 7 и тп, то есть последние элементы среди type=1, type=2, type=3, type=4 и тд
GROUP BY выдает только первые. sad

Пока вот что надумал

Код:

SELECT id, type, data
 FROM table
WHERE id IN (SELECT MAX(id) FROM table GROUP BY type)

указав все условия он получается "толстым". Есть варианты сделать проще?

Неактивен

 

#2 26.08.2008 18:06:07

Sign
Гуру
Зарегистрирован: 26.06.2008
Сообщений: 43

Re: Выборка поледнего элемента из группы

SELECT max(id), type
 FROM table
GROUP BY type

Неактивен

 

#3 27.08.2008 11:49:06

Aco
Участник
Откуда: СПб
Зарегистрирован: 30.04.2008
Сообщений: 10

Re: Выборка поледнего элемента из группы

Не подойдёт.
id вернёт, конечно последний, но data будет первой из группы

Неактивен

 

#4 27.08.2008 12:37:15

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

Re: Выборка поледнего элемента из группы

SELECT id, type, data
FROM table t1
JOIN (SELECT MAX(id) AS id FROM table GROUP BY type) t2 USING (id);

Подозреваю, что второй вариант будет выполнять подзапрос только один раз. А что означает слово "толстый"
в данном случае?

Неактивен

 

#5 27.08.2008 13:34:59

Aco
Участник
Откуда: СПб
Зарегистрирован: 30.04.2008
Сообщений: 10

Re: Выборка поледнего элемента из группы

много условий в where + 2 join. Пытаюсь как-то оптимизировать запрос и единственное недопонимание у меня это невозможность решить, казалось бы не сложную задачу, более простым методом чем у описано выше.

PS удивительно что GROUP BY field DESC работает как  GROUP BY field ORDER BY field DESC, а не GROUP BY field с выбором последних из схожих записей - такой подход больше подходил бы hmm

Отредактированно Aco (27.08.2008 13:36:41)

Неактивен

 

#6 27.08.2008 13:37:37

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Выборка поледнего элемента из группы

можно использовать GROUP BY field ORDER BY NULL  - тогда не будет неявной сортировки

Неактивен

 

Board footer

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