두 개의 열 뒤에 MySQL 테이블을 정렬해야하지만 일반 정렬과는 다릅니다. 채팅 응용 프로그램에서 내가 결과를 타임 스탬프 필드으로 분류뿐만 아니라SELECT ... ORDER BY 필드 (SELECT ...) 중복 필드에서 작동하지 않습니다.
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');
그래서 자신의 보낸 사람별로 그룹화 얻을하려면 : 타임 스탬프 BY
ORDER, 보낸 사람는 보낸 사람이
ORDER 쓸모가 , 타임 스탬프은 꽤 괜찮은 편이지만 처음에는 이전 메시지가 표시되지 않습니다.
SELECT timestamp, sender, message FROM messages ORDER BY sender IN (SELECT DISTINCT sender FROM messages ORDER BY timestamp), timestamp;
그것이 작동해야합니다 가정으로 작동하지 않습니다.
+---------------------+--------+---------+
| 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 |
+---------------------+--------+---------+
어떤 아이디어 : 그리고 여기에 내가 (: P를 OFC 내가이 쿼리에서 무엇을 얻을 수 없음)이 쿼리에서 예상 무엇인가? 모래밭? 팁? 아무것도? 사전에 덕분에, 질문은
당신이 정확하게 명시 할 수 쿼리를 달성하도록되어 무엇을 :
UPDATE는
당신은 아마 이런 식으로 뭔가를해야합니다. 당신은 불규칙 정렬을하고 당신이 원하는 것을하지 않는 두 가지 예제를 제공하기를 원한다고 말했지만, 실제로 원하는 것을 설명하지 않고 제공된 테이블에서 그것을 추론하려고 시도하는 것은 어렵습니다. – Hamish
마지막 테이블은 내가 얻고 자하는 완벽한 쿼리 결과입니다. D – SYNCRo
보낸 사람별로 그룹화 된 모든 메시지를 얻고 타임 스탬프별로 정렬해야하지만 보낸 사람과 타임 스탬프별로 정렬하지 않아야합니다. – SYNCRo