bestsource

테이블에서 TOP N 행을 선택합니다.

bestsource 2023. 2. 23. 22:57
반응형

테이블에서 TOP N 행을 선택합니다.

몇 가지 페이징을 하고 있는데, 몇 가지 쿼리를 작성하여 정의된 슬라이싱 결과를 얻어야 합니다. 예를 들어 다음과 같습니다.20n < x < 40n 등 범위의 모든 "위" 행을 취득해야 합니다.

SELECT * FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC;

그리고 이제 아이디라는 컬럼별로 슬라이딩을 해야 합니다.

mysql, mssql 및 oracle에서 쿼리를 실행해야 합니다.

페이지 사이즈가 20 레코드이고 페이지 넘버 2를 취득하고 싶다고 가정하면, 다음과 같습니다.

SQL Server, Oracle:

SELECT *   -- <-- pick any columns here from your table, if you wanna exclude the RowNumber
FROM (SELECT ROW_NUMBER OVER(ORDER BY ID DESC) RowNumber, * 
      FROM Reflow  
      WHERE ReflowProcessID = somenumber) t
WHERE RowNumber >= 20 AND RowNumber <= 40    

MySQL:

SELECT * 
FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 20 OFFSET 20

MySql에서는 20행부터 10행을 취득할 수 있습니다.

SELECT * FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 10 OFFSET 20 --Equivalent to LIMIT 20, 10
select * from table_name LIMIT 100

이것은 MYSQL에서만 동작합니다.

이 링크도 체크할 수 있습니다.

선택 * 시작master_question1 주문 기준question_idASC 제한 20

자세한 내용은 여기를 클릭해 주세요.

SQL Server 2012부터는 네이티브 페이지 번호를 사용하여 반복원성과 최고의 성능을 얻을 수 있습니다.

https://learn.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql?view=sql-server-ver15#using-offset-and-fetch-to-limit-the-rows-returned

쿼리는 다음과 같습니다.

SELECT * FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC;
OFFSET 20 ROWS  
FETCH NEXT 20 ROWS ONLY;  

언급URL : https://stackoverflow.com/questions/9150370/select-the-top-n-rows-from-a-table

반응형