Notice
Recent Posts
Recent Comments
Tags
- TempData
- 맥 오라클설치
- 바코드 생성하기
- javascript 유효성체크
- asp.net dropdownlist
- 하드 마이그레이션
- XSS PHP
- 하드 윈도우 복사
- jquery 바코드
- 404에러페이지
- 파일업로드 유효성체크
- XSS방어
- jquery 바코드생성
- javascript redirection
- asp.net Select
- 파일업로드 체크
- Mac Oracle
- ViewData
- javascript 바코드스캔
- SSD 복사
- php 캐쉬제거
- 바코드 스캔하기
- django 엑셀불러오기
- ViewBag
- asp.net core Select
- 타임피커
- ASP.Net Core 404
- javascript 바코드 생성
- 강제이동
- 말줄임표시
웹개발자의 기지개
[MySQL, MariaDB] ROW_NUMBER() 순위함수, 페이징을 위한 다중쿼리 본문
SQL/MySQL
[MySQL, MariaDB] ROW_NUMBER() 순위함수, 페이징을 위한 다중쿼리
http://portfolio.wonpaper.net 2024. 3. 12. 21:21row_number() 순위 함수이다. 페이징 작업시 유용하다.
그룹으로 묶어서 순서를 줄때는 partition by 칼럼 을 넣어준다.
ROW_NUMBER() OVER( partition by name order by no asc ) AS RN
SELECT *, ROW_NUMBER() OVER(PARTITION BY name ORDER BY name ASC) AS RN coupon_download where cno=1
다만, 유의할 것은 Mysql 5.5, 5.7 등의 버전에서는 ROW_NUMBER() 가 지원되지 않고 8점대 이상에서 지원됨을 유의
만약 이 ROW_NUMBER() 가 지원안된다면, 다중쿼리로 조금 복잡하게 처리해야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
SELECT
@rownum := @rownum + 1 AS rn,
name,
hp
FROM
(
SELECT
name,
hp
FROM
coupon_download
WHERE cno=1
GROUP BY
name,
hp
ORDER BY
name,
hp
) AS t
CROSS JOIN (
SELECT @rownum := 0
) AS r;
|
cs |
이번에는 페이징 처리를 위하여 Limit 10 (레코드수) Offset 0 (페이지 첫번째 순번) 을 넣어보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
SELECT
@rownum := @rownum + 1 AS rn,
name,
hp
FROM
(
SELECT
name,
hp
FROM
coupon_download
WHERE cno=1
GROUP BY
name,
hp
ORDER BY
name,
hp
) AS t
CROSS JOIN (
SELECT @rownum := 0
) AS r
LIMIT 10 OFFSET 0;
|
cs |
https://donghodazzi.tistory.com/335
상기 포스팅 글을 보면 쿼리문과 데이터가 잘 나와 있다.
1
2
3
4
5
6
7
8
|
-- 인구수가 많은 순서대로 랭킹 지정하기
SELECT c.*, ROW_NUMBER() OVER(ORDER BY Population DESC) AS rnk
FROM city c ;
-- 도시코드별 인구수 랭킹 지정하기
SELECT c.*, ROW_NUMBER() OVER(PARTITION BY CountryCode ORDER BY Population DESC) AS rnk
FROM city c ;
|
cs |
참고 : https://lab.cliel.com/entry/MariaDB-%EC%88%9C%EC%9C%84-%ED%95%A8%EC%88%98
'SQL > MySQL' 카테고리의 다른 글
[MySQL] MariaDB 정렬순서 만들기 (Query) (0) | 2024.07.29 |
---|---|
[MariaDB,MySQL] auto_increment 속성을 가지는 테이블의 다음 시퀀스값을 알고 싶을때 (0) | 2024.03.05 |
[MariaDB] 시스템 오류 1067이(가) 생겼습니다. (0) | 2022.12.18 |
[MySQL] CLIENT_PLUGIN_AUTH is required 접속에러 해결법 (0) | 2022.12.02 |
[MySQL] 실무 쿼리 참고 예제 1 - 서브쿼리 참고 (0) | 2022.02.27 |
Comments