2014-04-06 3 views
0

의 마지막 메시지를 얻을 수 있습니다.쿼리 나는 다음과 같은 구조를 가진 SQLite는 테이블이 각각 별개의 행

각 convo_id (또는 각 친구의 마지막 메시지)에 대한 마지막 메시지을 가져 오는 쿼리를 원합니다. 이와 유사한

+0

** _ id **는 autoincrement이므로, 각 ** convo_id **의 max (** _ id **)를 얻을 수 있다면, ** reply ** ** id ** s에서 마지막 Message를 얻을 수 있습니다. –

+0

What @ Rezoan은 당신이 직접 물어보기 전에 당신이 직접 질문을 쓰려고 노력한 것이 었습니다. 검색어에 문제가있는 경우 질문에 추가하면 Google에서 도와드립니다. 즉, 결과를 타임 스탬프별로 정렬하고 각 convo_id에 대해 결과 수를 1로 제한해야합니다. – rb512

답변

1

먼저, 각 convo_id의 마지막 타임 스탬프를 찾아 또는 그 이후로 한 번에 모든 작업을 수행 할 수 있습니다.

SELECT *, 
     MAX(time) 
FROM Message 
GROUP BY convo_id 
+0

Sqlite 3.6을 지원하는 Android API 10에서 작동합니다. 즉, 단일 단계 솔루션이 더 낮은 버전에서도 작동합니다. Thnx –

+0

작동이 보장되지는 않습니다 (특히 가장 큰 시간이 테이블의 마지막에 저장되지 않은 경우). –

0

뭔가 :

select convo_id,message from Message where (convo_id,_id) IN (select convo_id,max(_id) as _id from Message group by convo_id); 

구문 오류가 포함될 수 있습니다. 나는 내 PC에서 그것을 시도하지 않았다. 당신이 SQLite는 3.7.11이있는 경우

SELECT Message.* 
FROM Message 
JOIN (SELECT convo_id, 
      MAX(time) AS time 
     FROM Message 
     GROUP BY convo_id) 
USING (convo_id, time) 

: 원래 테이블의 레코드를 필터링하기 위해이 값을 사용하여, 다음

SELECT convo_id, 
     MAX(time) AS time 
FROM Message 
GROUP BY convo_id 

:

관련 문제