2014-03-07 6 views
2

이의 내가 '메시지'테이블라는 있다고 가정 해 봅시다 등 하위 쿼리 사용하지 않고. 첫 번째 포스터는 타임 스탬프에 의해 결정됩니다. 다음 두 번째 누가 먼저 누구인지 찾아 모든 게시물을 반환 :ORDER, 다음 다른 열을 기준으로

+-----------+--------+ 
| timestamp | poster | 
+-----------+--------+ 
|   1 | John | 
|   5 | John | 
|   2 | Peter | 
|   3 | Peter | 
|   4 | Chris | 
+-----------+--------+ 

편집
좋아 얘들 아, 난 너무 간단한 질문을했다. (J) ohn이 (P) eter 앞에 오기 때문에 일을하는 아주 기본적인 예입니다. 베드로가 처음이라면? poster 절에 DESC를 추가해야합니다. 하여 간단한 ORDER를 사용하여 SQL 문 등 제 1, 제 2, 제 3 누구에 의해 순서의 문제를 해결하지 않는

편집이 다시
내가 같은 좀 더 일반하게 믹스에 "크리스"추가 내가 원하는대로. John은 첫 번째 포스터였습니다. 그의 모든 게시물을 얻으십시오. 베드로가 두 번째이기 때문에. 그럼 크리스.

+0

'timestamp' 열 ? –

+0

기본 사항은 http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization에서 확인할 수 있습니다.html – jomsk1e

+0

@Prix, 링크 변경 XD – jomsk1e

답변

1

내가 설정 한 또 다른 결과를 생성하고 그와 함께 가입하는 것보다 다른 방법이 없다고 생각 :

SELECT poster, MIN(timestamp) AS first_ts 
FROM messages 
GROUP BY poster 
ORDER BY first_ts; 

결과 :

입니다
+--------+-----------+ 
| poster | first_ts | 
+--------+-----------+ 
| John | 1   | 
| Peter | 2   | 
| Chris | 4   | 
+--------+-----------+ 
+0

원하는 결과 세트를 제공하는 방식으로 쿼리에 참여하는 방법에 대한 예제를 제공 할 수 있습니까? 아니면 응용 프로그램에서 루프를 만드는 것을 말하고 있습니까? – JFriend

0

사용 ORDER BY

SELECT * FROM my_table ORDER BY poster ASC; 
0

@Deepak 쓴 무엇을 확장, 당신이 당신에게 두 번째 테이블을 줄 것이다 ORDER BY

SELECT timestamp, poster 
FROM my_table 
ORDER BY poster, timestamp; 

에서 두 개의 필드가 필요합니다. 당신이 정렬 순서를 지정하지 않으면

0

이 시도 ...

SELECT * 
FROM TableName 
ORDER BY poster ASC, 
      timestamp ASC; 

또는 단순히 ...

SELECT * 
FROM TableName 
ORDER BY poster, 
      timestamp; 

는, SQL은 자동으로, 그렇지 않으면위한 DESC를 추가, ASC 또는 상승을 가정 내림차순.

0

이 시도 :

SELECT * FROM messages ORDER BY timestamp ASC, poster ASC; 

here 자세한 내용을 읽어 보시기 바랍니다.

1

는 서브 쿼리없이 할 수있는 방법의

생각하지만, 수 없습니다 당신은 CSV 목록의 타임 스탬프로 답변을 받아 들일 수 있다면. 다음은 한 가지 방법입니다.

SELECT poster, 
     GROUP_CONCAT(timestamp ORDER BY timestamp) as timestamps  
FROM messages 
GROUP BY poster 
ORDER BY MIN(timestamp) 

sqlFiddle

관련 문제