как упорядочить список сообщений по последним отправленным

#mysql #database #group-by #sql-order-by

#mysql #База данных #группировать по #sql-порядок по

Вопрос:

Я пытаюсь найти правильный способ получения правильных результатов из моей таблицы mysql. У меня есть таблица, используемая для хранения сообщений:

     CREATE TABLE IF NOT EXISTS `messages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `who` int(11) NOT NULL,
  `to` int(11) NOT NULL,
  `message` varchar(2000) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`id`)
)
  

В этой таблице хранятся все сообщения из всех разговоров между всеми участниками.
Чтобы упорядочить результаты, я использую этот запрос:

 SELECT * FROM messages group by who order by date desc
  

Он группирует сообщения должным образом в соответствии с их отправителями, но упорядочивает их в соответствии с датой первого сообщения, написанного определенным участником. Я хочу упорядочить вывод в соответствии с датой последнего сообщения.
Пожалуйста, помогите мне найти выход из этого, у меня такое чувство, что это должно быть просто, но я все еще не вижу способа. Готов дать дополнительные пояснения, если это необходимо.
Спасибо всем!

Ответ №1:

Хотя я не уверен, чего вы пытаетесь достичь с помощью SELECT * при использовании GROUP BY , в качестве основы для заказа будет взята последняя дата:

 SELECT * FROM messages GROUP BY who ORDER BY MAX(date) DESC;
  

Ответ №2:

Если вы просто хотите упорядочить его по дате последней отправки, то просто измените запрос на:

SELECT * FROM messages ORDER BY date DESC

Это просто упорядочит его самым последним первым, самым старым последним

Комментарии:

1. Ответ Родена великолепен, если вы просто хотите получить последний ответ и сгруппировать с who

Ответ №3:

Почему бы просто не выбрать * из порядка сообщений по возрастанию, по дате desc?

Ответ №4:

попробуйте это:

ВЫБЕРИТЕ distinct m.who, m.* ИЗ сообщений m в порядке по дате desc