mssql top ~ not in 에 대하여..

서세윤·2025년 1월 13일
post-thumbnail

난 php 개발자로써 여태 mysql , oracle 만 사용해왔다.
mssql은 이번 이직후 처음 접하는것인데, 여기서 mysql의 ( limit n,m )이 과거에는 없었는듯 하다.
그래서 보통 어떻게 사용하느냐..

top n (상위 n개를 뽑아라)
not in ( select serial 같은 where,order조건~~ )
을 실행하는게 과거 대부분이었다.
즉 현재 페이지가 3페이지라면, 상위 10개 뽑아라~ 단, 1,2페이지 내용은 제외하고~
라는 뜻이다

과거에 mssql에서는 거의 주력 방법이었으나, mysql만 사용해오던 나에겐 굉~장히 생소한 방법이었다. 소스를 보면서 느낀것으로는 왜 이렇게 사용하는가 싶기도 했고.. 간단한 쿼리지만 뭔가 .. 이해하는데 애를 먹었던것 같다.
내가 보던 소스에서 저 부분에서 문제가 발생하였다.
order by를 제대로 처리해주지않아, 정렬이 제대로 되지않았는점..
즉 A~Z가 나오면 상위 제외하고 가져오는게 가능했으나, 정렬이 제대로 되지않는다면? 엉뚱한게 제외되면서 계속 같은 결과만 반복되는것이다..

파악후 order by절을 추가 하려했으나, offset 이란 기능이 추가되어있다는것을 확인하였다.
즉 mysql의 limit 와 같은 기능.

저 방법을 사용하면 order by를 추가 할 필요도 없고 + 속도까지 개선된다고 한다.

offset 사용법은 아래와 같다
SELECT * FROM table ORDER BY column OFFSET skip_count ROWS FETCH NEXT get_count ROWS ONLY

뭐 길기는 하나,, mysql의 limit 와 같다고 보면 된다

이렇게.. mssql에 한발짝 디뎌본다... ㅜㅜㅜ asp너무 생소해~ mssql 너무 생소해~~ ㅜㅜ

profile
개잡부..

0개의 댓글