Мне нужно отсортировать таблицу MySQL после двух столбцов, но не как обычную сортировку.В приложении чата я хочу получать результаты, отсортированные по полю отметки времени, но также сгруппированные по их отправителю
CREATE TABLE messages (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
sender int(10) unsigned NOT NULL,
message char(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
INSERT INTO messages VALUES ('1', '2011-02-28 01:58:24', '3', '1');
INSERT INTO messages VALUES ('2', '2011-02-28 01:58:28', '3', '2');
INSERT INTO messages VALUES ('3', '2011-02-28 01:58:35', '1', '5');
INSERT INTO messages VALUES ('4', '2011-02-28 01:58:36', '2', '7');
INSERT INTO messages VALUES ('5', '2011-02-28 01:58:38', '3', '3');
INSERT INTO messages VALUES ('6', '2011-02-28 01:58:39', '2', '8');
INSERT INTO messages VALUES ('7', '2011-02-28 01:58:40', '1', '6');
INSERT INTO messages VALUES ('8', '2011-02-28 01:58:41', '3', '4');
Итак:
ORDER BY timestamp, отправитель бесполезен
ORDER BY отправителя, отметка времени довольно хорошо, но сначала она не будет отображать старые сообщения
SELECT timestamp, sender, message FROM messages ORDER BY sender IN (SELECT DISTINCT sender FROM messages ORDER BY timestamp), timestamp;
не работает, так как я предполагаю, что она должна работать.И вот что я ожидал от этого запроса (ofc не то, что я получаю из этого запроса: P):
+---------------------+--------+---------+
| timestamp | sender | message |
+---------------------+--------+---------+
| 2011-02-28 01:58:24 | 3 | 1 |
| 2011-02-28 01:58:28 | 3 | 2 |
| 2011-02-28 01:58:38 | 3 | 3 |
| 2011-02-28 01:58:41 | 3 | 4 |
| 2011-02-28 01:58:35 | 1 | 5 |
| 2011-02-28 01:58:40 | 1 | 6 |
| 2011-02-28 01:58:36 | 2 | 7 |
| 2011-02-28 01:58:39 | 2 | 8 |
+---------------------+--------+---------+
Есть идеи?ссылки?чаевые?что-нибудь?Заранее спасибо, любые вопросы приветствуются