일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- mysql
- 코드이그나이터
- APK
- FCM
- API
- config
- phpDocumentor
- 영카트
- ajax
- 웹 프로그래밍
- 설정
- rairen
- 옵션표
- javascript
- 함수
- jquery
- html
- 안드로이드
- jw player
- 그누보드
- 라이렌
- function
- php
- CI3
- Database
- 헬퍼
- MSsql
- codeigniter3
- 후크
- CodeIgniter
- Today
- Total
프로그램 개발서
rownum 데이터를 다시 정렬하여 rownum번호 사용하기 본문
MySql에서 rownum을 쓰기 위해서 '@rownum := @rownum + 1 ' 을 많이 쓰고 있을 것이다.
개발을 하는 과정에서
특정 컬럼으로 정렬한 데이터에 rownum을 매기고 다른 컬럼으로 정렬하여 rownum 순서가 바뀌어서 보이려고 할 경우는 어떻게 해야하는가 였다.
쿼리를 구성을 할 때는 데이터에 rownum과 정렬 된 것을 서브쿼리로 잡고 가 밖에서 한번더 정렬을 하면 될 것으로 생각하고 작업을 했으나 생각대로 되지 않아 몇 시간 고민했던 사항이다.
그러나 다르게 생각하여 작업을 진행하니 간단하게 풀린 문제이기도 햇다.
SELECT * AS count FROM
(
SELECT t2.* , @rownum := @rownum + 1 AS rank_number
FROM
(
SELECT
*
FROM `table1`
JOIN (SELECT @rownum := 0) r
ORDER BY culumn2 DESC
) AS t2
) AS tORDER BY t.culumn3 ASC
위의 소스는 해결한 쿼리이다.
해결방법 순서를 정리하면
1. 정렬데이터를 가져오는 쿼리를 만든다.
SELECT
*
FROM `table1`
JOIN (SELECT @rownum := 0) r
ORDER BY culumn2 DESC
2. rownum을 매기는 쿼리에 서브쿼리로 넣는다.
SELECT t2.* , @rownum := @rownum + 1 AS rank_number
FROM
(
SELECT
*
FROM `table1`
JOIN (SELECT @rownum := 0) r
ORDER BY culumn2 DESC
) AS t2
이러면 culumn2 로 정렬된 데이터에 rownum이 들어가게 된다.
3. rownum이 새겨진 쿼리를 서브쿼리로 하여 다른 컬럼으로 정렬하는 쿼리안에 넣는다.
SELECT t.* FROM
(
SELECT t2.* , @rownum := @rownum + 1 AS rank_number
FROM
(
SELECT
*
FROM `table1`
JOIN (SELECT @rownum := 0) r
ORDER BY culumn2 DESC
) AS t2
) AS t
ORDER BY culumn3 ASC
이렇게 하면 완성이다.
결과 데이터로 만들어보면 보면
culumn | culumn2 | culumn3 | rownum
============================
1 | 50 | 51 | 2
2 | 40 | 45 | 3
3 | 80 | 86 | 1
이런 데이터가 만들어진다.
많이 쓰이진 않을지라도 알아두면 응용해서 사용할 일이 많을 것 같다는 생각을 한 문제였다.
크게 보면 몰라도 문제가 될 여지는 없으나 알아두면 좋을 것 같다.
'Web' 카테고리의 다른 글
function 0.04 함수 모음집 (0) | 2019.05.02 |
---|---|
APK 버전 자동 관리하기 (1) | 2019.03.29 |
apk 파일 추출 - 커스텀 apk 파일명 빌드 (0) | 2017.12.31 |
[PageVisivilityAPI]브라우저 최소화 이벤트 (0) | 2017.10.26 |
[JWPlayer] 구간 반복에 사용한 이벤트 순서 (0) | 2017.09.17 |