행번호 순서 매기기

1) SET구문으로 ROWNUM 값을 초기화 후 조회

<!--초기화 --> SET @rownum:=0;    

<!--조회 --> SELECT @rownum:=@rownum+1, t.* FROM table t 


2) WHERE 절에서 초기화

SELECT @rownum:=@rownum+1, t.* FROM table t WHERE (@rownum:=0)=0; 


3) FROM 절에서 초기화

SELECT @rownum:=@rownum+1, t.* FROM table t, (SELECT @rownum:=0) TMP; 


4) ORDER BY 사용 시 Sub 쿼리를 사용

 

5) JOIN 문 사용 시
① (SELECT @rownum:=0) TMP;를 JOIN문 아래에 추가
② INNER JOIN 사용 - INNER JOIN (SELECT @rownum:=0) T2

 

 

 

 

 

 

표본수가 다른 컬럼에 평균을 구해서 평균(rscore)에 따른 랭킹 순위를 주려고 했었당,  

SELECT @num:=@num+1 as ranking, r.rno , u.name, AVG(r.rscore) AS rscore FROM (select @num:=0) ranking, r_review AS r JOIN user AS u ON r.rno = u.uno GROUP BY r.rno ORDER BY rscore DESC;

ranking 순서 오류

 

 

 

 

이 문제를 3시간 잡앗다 ㅠㅠ

랭킹과 매칭되는 컬럼이 GROUP BY에 속한 컬럼의 카운트 수을 잡아서 rscore와 매칭되지 않고 rno의 갯수와 매칭되었다...

결론은 서브쿼리로 select문을 빼고 랭킹순번을 order by로 rscore와 잡아 주었다 ㅠㅠ

SELECT @num:=@num+1 as ranking, rno, name, rscore FROM (select @num:=0) ranking, (
SELECT r.rno , u.name, AVG(r.rscore) AS rscore FROM r_review AS r JOIN user AS u ON r.rno = u.uno GROUP BY r.rno limit 5
)A ORDER BY rscore DESC;

ranking 순서 ㅇ

'DB > 1' 카테고리의 다른 글

[MySQL] MySQL 정리  (0) 2022.03.18
[h2] h2 database 설치 설정  (0) 2022.02.11
SQL 정리  (0) 2022.02.08
개념적 데이터베이스 모델링 연습  (3) 2020.03.10
[SQLD] 정규화 및 반정규화  (0) 2020.03.10

+ Recent posts