1. 페이징
LIMIT 3 OFFSET ? 을 통해 데이터 3개씩 조회하도록 페이징할 수 있다.
2. 랭킹
DENSE_RANK() OVER (ORDER BY t1.score DESC) AS rank 으로 점수로 랭킹을 조회할 수 있도록 하였다.
만약 동점인 점수가 있다면 같은 랭크로 조회된다
3. Total Count
(SELECT @totalCount := (SELECT COUNT(id) FROM game_title WHERE publicity = 1)) AS T으로
서브쿼리를 추가하여 전체 카운트를 조회하도록 하였다.
참고로 CONVERT(t1.image USING UTF8) AS imgsrc의 경우 imgsrc가 LONGBLOB 타입으로 되어있어
CONVERT( ~ USING UTF8)으로 감싸줘야한다. 만약 그냥 조회하게 되면 데이터가 변환되지 않아 BLOB으로 조회된다.
SELECT
t3.*, CONVERT(@totalCount USING UTF8) as totalCount FROM (
SELECT
t1.*,
t2.username,
CONVERT(t1.image USING UTF8) AS imgsrc,
DENSE_RANK() OVER (ORDER BY t1.score DESC) AS rank
FROM
game_title t1
LEFT JOIN
userTable t2 ON t1.creator = t2.email
WHERE
t1.publicity = 1
ORDER BY
t1.score DESC
) AS t3,
(SELECT @totalCount := (SELECT COUNT(id) FROM game_title WHERE publicity = 1)) AS T
LIMIT 3 OFFSET ?;
'Database > Mysql & MyBatis' 카테고리의 다른 글
Illegal mix of collations (0) | 2024.09.17 |
---|---|
MyBatis 프로시저 생성하기 (0) | 2024.09.15 |
[centos7] MariaDB 설치 및 DBeaver연결 (0) | 2023.07.29 |