Строка с максимальным значением столбца

Yura123

Новичок
Строка с максимальным значением столбца

Ребята, вопрос простейший, но с ответом не получается.
Есть таблица -- 3 колонки:

id session_id text

id -- auto increment
session_id -- char(32)
text -- text

session_id может повторяться.

Как выбрать уникальные значения session_id при том, чтобы id у каждого ряда был максимальным?
Такое не проходит:

SELECT id, session_id FROM table GROUP BY session_id ORDER BY id DESC

Возвращает минимальный (первый) айди для каждой сессии.

Спасибо.
 

4m@t!c

Александр
Думаю, что у вас что-то с логикой приложения не так. Решение будет таким:
Код:
SELECT `session_id`, max(`id`) FROM `table` GROUP BY `session_id`
P.S. Писал на коленке.
 

Yura123

Новичок
Нет, это то же, что писал и я :)
Попробую перефразировать.
Есть форум с сообщениями от юзеров.
Одна таблица -- айди сообщения, дата, айди юзера и текст.
Нужно показать последнее сообщение от каждого юзера.
Сейчас у нас выбирается первое сообщение.
 

Yura123

Новичок
На то, чтобы знать дату сообщения.
Если написать

SELECT user_name, message FROM table GROUP BY user_name ORDER BY date DESC

то получим _первое_ сообщение от каждого юзера, а нужно _последнее_.
 

partizan

Новичок
Автор оригинала: Yura123
Нет, это то же, что писал и я :)
Нет, не тоже

-~{}~ 10.08.06 18:07:

Автор оригинала: 4m@t!c
Думаю, что у вас что-то с логикой приложения не так. Решение будет таким:
Код:
SELECT `session_id`, [COLOR=red]MAX[/COLOR] (`id`) FROM `table` GROUP BY `session_id`
P.S. Писал на коленке.
 

Yura123

Новичок
2 Panchous: ORDER BY date ASC ничего не дает.
2 partizan: Результат тот же.

-~{}~ 10.08.06 17:13:

Хороший пример -- этот форум.
У нас есть список тем. В правой колонке мы видим, кто запостил последнее сообщение. Вот это и нужно.
В моем случае получается, что видно того, кто запослит первое сообщение.
 

Фанат

oncle terrible
Команда форума
если дата содержит в себе и время, то можно джойнить по ней.
это не очень надёжно, но для форума приемлемо.
 

Yura123

Новичок
Время содержит.
Есть и уникальный айди сообщения, лучше по нему.
Но как?
 

Фанат

oncle terrible
Команда форума
кажется, так:
группировать по ид юзера, и выбирать масимальныи айди сообщения. и по нему джойнить ту же таблицу и получать целиком нужную запись.
 

Фанат

oncle terrible
Команда форума
ну, обычно
табле лефт джойн табле он макс_ид=ид

я ,вообще, не уверен, что это сработает
 

partizan

Новичок
Автор оригинала: Yura123
Нужно показать последнее сообщение от каждого юзера.
Сейчас у нас выбирается первое сообщение.
Автор оригинала: Yura123
Хороший пример -- этот форум.
У нас есть список тем. В правой колонке мы видим, кто запостил последнее сообщение. Вот это и нужно.
В моем случае получается, что видно того, кто запослит первое сообщение.
Так определись сначала окончательно, что нужно
 

Yura123

Новичок
Я определился.
Вы видите разницу в моих постах?

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

Нужен юзер и текст сообщения. Последнего.

-~{}~ 10.08.06 17:33:

2 Фанат: не работает такое.
 

partizan

Новичок
Лично я вижу большую разницу между "последнее сообщения от каждого юзера", и "кто последний запостил"

-~{}~ 10.08.06 18:39:

Если нужны текст последнего сообщения и его автор, и если session_id - это юзер:

SELECT session_id,text FROM table ORDER BY id DESC LIMIT 1
 

Yura123

Новичок
Хорошо.
Таблица. В ней уникальные айди сообщений. Юзеры дублируются. Нужно последнее сообщение от каждого юзера.
 

partizan

Новичок
Непонятно только, где тут вообще id топика?
Групировать надо именно по топику, а не по юзеру
 

Yura123

Новичок
Нет, лимит не подходит, т.к. нужен список:

Юзер --- Последнее сообщение
Юзер --- Последнее сообщение
Юзер --- Последнее сообщение
 

Фанат

oncle terrible
Команда форума
у меня что-то подобное работает, строится список сообщений форума..
Но у меня не получилось показать, как раз, последнего запостившего. а наоборот - только автора.

про дату наврал, кстати. джойн совсем не по ней.
 
Сверху