2012-08-26 2 views
1

나는 몇개의 열과 결과 세트에서 하나의 id에 의해 정렬 될 수있는 테이블에 대해 어떤 쿼리를 가지고있다. 다음 또는 이전 레코드 (또는 전체 결과 집합의 ID 오프셋)를 가져 오는 방법은 무엇입니까?mysql 쿼리에서 레코드 오프셋을 얻는다.

즉. 의이 first_col하고, 지정된 ID 2로 분류하는 것은, 다음 레코드가 3 일한다면 나는 다음과 같은 테이블

ID First_Col Second_Col Name 
1 34  24   John 
2 40  22   James 
3 48  5   Hugh 

을 가지고 있지만 Second_Col에 의해 분류하면, 다음 레코드가 1

감안할 것입니다 가정 해 봅시다 내 함수에 전달되는 sortBy 표현식과 id, 다음 레코드를 쉽게 찾을 수 있습니까? 여기

+0

당신이하려고 참조 페이지 매김 기능을 구현하는 방법? –

+0

문제를 이해할 수 없습니까? 여기서 뭘하고 싶니? –

답변

2

이 작동합니다 :

SELECT 
* 
FROM 
names 
WHERE 
Second_Col > (SELECT Second_Col FROM names WHERE ID = 2) 
ORDER BY 
Second_Col 
LIMIT 1 

http://sqlfiddle.com/#!2/fac71/3

0

당신은 다음과 같습니다 http://sqlfiddle.com/#!3/d8761/5

아마 그것보다 효율적으로 수행 할 수 있지만, 그것은 작동 :

SELECT T.ID from TBL T WHERE 
T.SECOND_COL= 
(SELECT MIN(TT.SECOND_COL) FROM TBL TT WHERE TT.SECOND_COL>(SELECT TTT.SECOND_COL FROM TBL TTT WHERE ID=2)) 
+0

첫 번째 예는 MySQL이 아닌 MS SQL Server를 사용하고 있습니다. 그렇습니다.보다 효율적으로 수행 할 수 있습니다. http://stackoverflow.com/a/12131322/1432614 –

+0

MS SQL? 이것은 표준 ANSI SQL입니다. 이거 어디서 났니? – Samson

+0

SQLFiddle 링크는 "MS SQL Server 2008 R2"를 표시합니다. –

관련 문제