2013-07-18 1 views
0

비 기본 키순으로 정렬 된 데이터 테이블이 있습니다.mysql 하위 선택에서 다음 행 선택

id | likes 
4 |  6 
2 |  5 
5 |  2 
3 |  2 
1 |  2 

id # 3 이후의 행을 찾으려면 검색어가 필요합니다.

내가 행 번호를 사용하여 시도하고이를 작성하지만, 더 나은, 더 효율적인 방법이이 할 경우는

select * from (
       SELECT l.id, 
       l.likes, 
       @curRow := @curRow + 1 AS row_number 
       FROM sk_posters l 
       JOIN (SELECT @curRow := 0) r 
       WHERE active = 'yes' 
       order by likes desc, id desc) 
      as mycount where row_number = 
      (select row_number from (
       SELECT l.id, 
       l.likes, 
       @curRow := @curRow + 1 AS row_number 
       FROM sk_posters l 
       JOIN (SELECT @curRow := 0) r 
       WHERE active = 'yes' 
       order by likes desc, id desc) 
      as mycount 
      where id=5)+1 limit 1 

정말 비효율적 인 것 같습니다거야?

+0

테이블 및 쿼리가 일치하지 않는 것처럼 쿼리의 끝 부분에 제한을 사용할 수 있습니다. http://www.sqlfiddle.com/에서 샘플 데이터를 제공 할 수 있습니까? –

답변

0

당신은

SELECT * FROM YOUR_TABLE LIMIT 2,1