[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите правильно составить запрос
at0m1x
Всем привет! В mysql базе данных моего сайта есть таблица сообщений - переписка пользователей друг с другом. Таблица имеет следующие поля:


message_id | sender_id | recepient_id | subject | message | time


В этой таблице содержится 4000000 записей. Мне необходимо из нее выбрать последние сообщения всех пользователей. Я пробовал делать выборку таким запросом:


SELECT `sender_id`, `subject`, `message`, `time`
FROM `messages`
GROUP BY `sender_id`
ORDER BY `time` DESC


Запрос ошибок не выдает, выбирает по одному сообщению для каждого пользователя, но при проверке оказалось что он выбирает не последние сообщения. Подскажите в чем может быть ошибка и как правильно составить такой запрос.



Спустя 17 минут, 13 секунд (31.01.2012 - 09:42) Игорь_Vasinsky написал(а):
Цитата
то он выбирает не последние сообщения

а какие? или секрет?

у тя time - у поля какой формат? а данные в каком виде?

Спустя 10 минут, 52 секунды (31.01.2012 - 09:53) at0m1x написал(а):
Поле time - тип данных DATETIME

Спустя 2 минуты, 27 секунд (31.01.2012 - 09:55) Игорь_Vasinsky написал(а):
Цитата
а какие? или секрет?



Спустя 2 часа, 45 минут, 52 секунды (1.02.2012 - 12:41) maximka787 написал(а):
Этот запрос верный. Ошибок не может быть, если только дата в нормальном виде DATETIME и вставляется неплохо, если автоматически (Now())

Спустя 43 минуты, 30 секунд (1.02.2012 - 13:25) alexbel2404 написал(а):
ну можно по message_id сортировать, если оно автоинкремент.

Спустя 7 минут, 7 секунд (1.02.2012 - 13:32) dadli написал(а):
at0m1x
попрубуите так:

SELECT sender_id,message  FROM messages
INNER JOIN
(SELECT sender_id AS s_i,MAX(`time`) AS m_t FROM messages GROUP BY sender_id) AS t
ON messages.sender_id = t.s_i AND messages.`time` = t.m_t
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.