MySQL은 rank 함수나 rownum 같은게 없다. 때문에 사용자 정의 변수를 사용하는 것 같다. (사용자 정의 변수는 5.0 버전 이상에서 사용할 수 있다 함)
몇 가지 방법이 있는 것 같은데 가장 간단해 보이는걸로..
성능은 장담 못 하겠음 @ㅅ@
몇 가지 방법이 있는 것 같은데 가장 간단해 보이는걸로..
SELECT @rank:=@rank+1 rank, sub.*
FROM (SELECT @rank:=0) rank,
({SUBQUERY_HERE}) sub;
-- 변수 @rank를 초기화 하지 않으면 계속 쌓이기 때문에 subquery로 @rank:=0이 추가됨
또는 (join이 싫다면..)
SET @rank:=0;
SELECT @rank:=@rank+1 rank, sub.*
FROM {YOUR_TABLE_HERE} sub
{CONDITION_OR_ORDERING_HERE};
FROM (SELECT @rank:=0) rank,
({SUBQUERY_HERE}) sub;
-- 변수 @rank를 초기화 하지 않으면 계속 쌓이기 때문에 subquery로 @rank:=0이 추가됨
또는 (join이 싫다면..)
SET @rank:=0;
SELECT @rank:=@rank+1 rank, sub.*
FROM {YOUR_TABLE_HERE} sub
{CONDITION_OR_ORDERING_HERE};
성능은 장담 못 하겠음 @ㅅ@
덧글