2010-05-18 3 views
4

어려운 문제가 있습니다. 모든 문서의 모든 버전을 단일 테이블에 저장합니다. 각 문서에는 고유 한 ID가 있으며 버전은 새 버전이있을 때마다 증가하는 정수로 저장됩니다.SQLite 그룹에서 반환 할 행 지정

데이터베이스에서 각 문서의 최신 버전 만 선택하는 쿼리가 필요합니다. GROUP BY를 사용하는 동안 버전에 따라 버전이 데이터베이스에 삽입되지 않으면 중단됩니다 (즉, 항상 최신 버전이 아닌 최대 ROWID를 사용함).

각 문서의 최신 버전은 문서 번호가 3이고 문서 B가 버전 6임을 나타냅니다.

나는이 일을하는 법을 알고있다. (모든 문서를 선택하지만 각 document_id에 대해 하나의 레코드 만 반환하고 리턴 된 레코드는 가장 높은 버전 번호를 가져야한다)?

답변

6

당신은 문서

select t.* 
    from docs t 
     inner join (select id, max(version) as ver from docs group by id) as t2 
      where t2.id = t.id and t2.ver = t.version 
라고 그래서

같은 테이블을 가정 최대 버전을 찾기 위해 부속 선택을 할 필요가