본문 바로가기

MSSQL

distinct 구문에서 랜덤 쿼리 쉽게 하기

mssql 클래식 asp 쿼리시에

distinct 구문에 대한 order by newid() 적용이 몇년만에 처음으로 필요한 업무가 있어서

"그냥 평소처럼 쓰던 쿼리 뒤에다가 order by newid() 넣으면 알아서 랜덤 출력 되어주겠지"라고 생각하다가

일단 에러...

검색해봤으나 눈에 익숙한 한글로 된 자료들 중엔 의외로 찾기가 어려웠네요.

스택오버플로에서 여러가지 방법이 많이 제시되어 있었는데

그중에 가장 간단한 방법으로 하나 소개합니다.

저도 이걸로 손쉽게 업무 해결.

 

SELECT * FROM (여기에 order by절을 제외한 필요한 쿼리) as t ORDER BY NEWID() 

사용하실 쿼리문에서 order by 절을 제거하고, 남은 쿼리문을 괄호로 감싸준 후, 위 소스처럼 해주니까

일단 제가 사용하려던 쿼리문의 경우 그냥 한방에 원하는 결과를 얻었네요. 아래와 같이...

SELECT * FROM (select distinct shop_idx from bbtable where idx <> '' and open_yn='y') as t ORDER BY NEWID() 

 

저도 요즘 개념 정리할 겸, 보기 쉬운 SQL책 한권 사서 보고 있는데

저런 방법은 소개되어 있지 않더군요.

그냥 기본기가 잘 되어 있을 경우에 응용해서 생각하면 저런거 스스로 생각해낼수 있을것 같다는 생각도

문득 들긴 합니다만...저는 내공이 부족한가 봅니다.