본문 바로가기
기타

mysql rank 함수 처럼 사용하기

by 후린트 2019. 2. 28.
반응형

@변수를 이용하여 rank 처럼 사용한다.


기본적으로 rownum처럼 사용하기


SELECT 

  @rownum := @rownum +1 AS rownum, 

  t.* 

FROM  test t,

(SELECT @rownum := 0) init   // 변수 초기화 



userid 별로 rank를 따로 적용하여 특정 rank만 추출하기

방법 : userid 로 sorting을 하고 userid가 바뀔때마다 @rank 변수를 초기화

주의 : 테이블의 데이타 양이 많을경우 조심해서 사용해야한다!


SELECT * FROM (
SELECT
@rank := (
CASE WHEN @uid = t.user_id THEN @rank := @rank+1 ELSE @rank := 1 END
) AS rank,
@uid := t.user_id,
t.user_id
FROM test t
, (SELECT @uid := NULL, @rank := 0 ) AS init
ORDER BY t.user_id ASC
) X
WHERE X.rank = 2
view raw gistfile1.txt hosted with ❤ by GitHub
반응형