2012-03-28 8 views
2

이 작업을 수행 할 쿼리를 작성하려고합니다 : 예를 들어 테이블에 100 개의 레코드가 있습니다. 나는 쿼리를 호출하는. NET 양식이 있습니다. 나는 문법 파라미터 인 pageindex를 가지고 있는데, 이는 http://mysite.com?id=2과 같다. 내가 지금하고 싶은 것은 id = NULL 인 경우, 1에서 20까지의 id를 가진 그 테이블로부터 레코드의 첫 번째 세트를 얻는다. id = 2이면 1에서 20까지를 의미하고, 레코드에서 두 번째 레코드 세트를 얻는다. 20 ~ 40, id = 3 인 경우 세 번째 레코드 집합, 즉 해당 테이블의 40-60 레코드를 의미합니다.
이것이 가능한지 알고 싶습니다. 사전에 고마워, Laziale의SQL 쿼리 선택

+1

현재 페이지의 모양은 어떻습니까? 이제 데이터베이스 코드는 어떻게 생깁니 까? –

+0

[SQL Server에서 페이징] (http://www.codeguru.com/csharp/.net/net_data/article.php/c19611/Paging-in-SQL-Server-2005.htm) –

답변

0

(0에 기초)

SELECT TOP 20 * FROM MyTable WHERE (ID > @Page*20) ORDER BY ID 

당신이 만약 페이지 번호 MS SQL의 페이징 스타일을 사용하고자하고 ID는 줄 당신은 할 수 없습니다

WITH NewTable AS (SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber FROM MyTable) 
SELECT TOP 20 * FROM NewTable WHERE (RowNumber > @Page*20) 

참조 : http://msdn.microsoft.com/en-us/library/ms186734.aspx

,

http://msdn.microsoft.com/en-us/library/ms175972.aspx

0
SELECT col1, col2 
FROM (
    SELECT col1, col2, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum 
    FROM MyTable 
) AS MyDerivedTable 
WHERE MyDerivedTable.RowNum BETWEEN @startRow AND @endRow 

는 "MSSQL 한계 오프셋"검색 큐를 통해 구글에 Row Offset in SQL Server에서 첫 번째 결과를 가지고. 당신이 그렇게 말 당신이 그것을 만들, 당신은

@Page을 할 수있는 ID를 1에서 100 라인에있는 경우

+0

질문에 대한 질문이 없습니다. MySQL. SQL Server에서 어떻게합니까? –

+0

답변이 업데이트되었습니다. – iehrlich