본문 바로가기
개발팁

DB 별 SQL 결과 갯수제한, 페이징 처리, limit, offset, mysql, mariadb, mssql, oracle

by devscb 2021. 12. 7.
반응형



DB별 SQL 결과 갯수제한하는 법을 기록합니다. (주로 페이징을 위해 쓰이는 쿼리입니다.

MySQL, Maria DB




-- limit [오프셋, 개수] 키워드 사용
-- 아래 예의 경우에는 c1 컬럼기준으로 내림차순 정렬한 뒤, 0번째부터 10개의 row를 가져오겠다는 뜻입니다.
select * from tbl order by c1 desc limit 0, 10; 




MSSQL

 


-- top [갯수] 키워드 사용
-- 아래 예의 경우에는 c1 컬럼기준으로 내림차순 정렬한 뒤, 맨 위부터 10개의 row를 가져오겠다는 뜻입니다.
select top 10 * from tbl order by c1 desc limit 0, 10;



Oracle (오라클) / tibero (티베로, 티배로)

 


-- rownum 키워드 사용
-- 아래 예의 경우에는 c1 컬럼기준으로 내림차순 정렬한 뒤, 정렬된 테이블에서 1번째부터 10번째(10개) 데이터를 가져오겠다는 뜻입니다.
select * from (
select * from tbl order by c1 desc)
where 1<= rownum and rownum < =10;

-- 아래 예는 실행할 때마다 다른 결과를 얻습니다. 
SELECT * FROM tbl WHERE ROWNUM <= 10 ORDER BY c1;




총평


다른 db에 비해 오라클 쿼리는 너무 장황한거 같습니다.
mysql쪽의 limit을 도입해줬으면 하는데, 페이징 기능 개발이 필요할때마다 타이핑도 많이 해야하고 보기에도 너무 안좋습니다.
이거 말고도 오라클이 불편한점이 많은데, 엔터프라이즈급에서는 대부분 오라클을 사용하는것으로 보이니 적응할 수 밖에 없는 현실이 안타깝습니다.
대기업의 횡포같은 느낌..

DB 별 SQL 결과 갯수제한, 페이징 처리, limit, offset, mysql, mariadb, mssql, oracle
#mysql,#mssql,#mariadb,#oracle,#tibero,#오라클,#티베로,#티배로,#sql,#limit,#offset,#rownum,#top

 

 

https://devscb.com/post/74

 

Limit the number of SQL results per DB, paging processing, limit, offset, mysql, mariadb, mssql, oracle

Record how to limit the number of SQL results for each DB. (This query is mainly used for paging.) MySQL, Maria DB123-- Use limit [offset, count] keyword-- In the example below, this means that 10 ro

devscb.com

 

728x90
반응형

댓글