Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- jvm이란
- 안드로이드 os 구조
- 안드로이드 유닛 테스트 예시
- 스택 자바 코드
- 큐 자바 코드
- 객체
- 자바 다형성
- jvm 작동 원리
- 안드로이드 레트로핏 crud
- 안드로이드 유닛테스트란
- Rxjava Observable
- rxjava disposable
- rxjava hot observable
- ar vr 차이
- 2022 플러터 설치
- 멤버변수
- ANR이란
- 서비스 쓰레드 차이
- 스택 큐 차이
- 2022 플러터 안드로이드 스튜디오
- 클래스
- 안드로이드 라이선스
- 서비스 vs 쓰레드
- 안드로이드 유닛 테스트
- 안드로이드 레트로핏 사용법
- android retrofit login
- 안드로이드 라이선스 종류
- rxjava cold observable
- android ar 개발
- 플러터 설치 2022
Archives
- Today
- Total
나만을 위한 블로그
[MySQL] varchar 컬럼 안의 숫자 정렬하기 본문
728x90
반응형
https://stackoverflow.com/questions/1625166/mysql-order-varchar-field-as-integer
(↑이 곳은 CAST()를 쓰는 방법이 여럿 있다는 걸 안 곳이다)
게임을 만들었는데 결과를 가져와 랭킹 형태로 띄우고 싶었다.
그래서 랭킹을 띄우긴 했지만 1, 2, 3 순으로 되는 게 아니라 1, 10, 11 순으로 정렬됐다.
이것저것 알아보다 해결법을 발견했다.
SELECT 컬럼명, (SELECT COUNT(*) FROM shoot WHERE record > t.record + 1) AS rank
FROM 테이블명 AS t
ORDER BY rank DESC;
이 쿼리문은 특정 테이블에서 랭킹을 구해주는 쿼리문이다. MySQL 8.x 이하에서 주로 사용하며 8.x 이상부터는 RANK()를 지원해준다고 한다. 이전 버전에선 지원해주지 않아 이런 쿼리문을 써서 랭킹을 구해야 한다.
글에선 ORDER BY 컬럼명 * 1을 하라고 나와있지만 처음엔 저렇게 해도 되지 않았다.
아마 컬럼명, (SELECT COUNT(*)~~t.record) 부분 때문일거라 생각했다. 그래서 이곳저곳에 +1, *1을 추가해보다가 저렇게 넣으니 제대로 작동했다.
이렇게 record가 1부터 쭉 나오는 걸 볼 수 있다. rank 컬럼은 신경쓰지 않아도 된다.
이제 record 값 바꿔서 다시 앱 개발 시작하자.
반응형
'MySQL' 카테고리의 다른 글
[MySQL] Error 1215: Cannot add foreign key constraint 에러 해결 (0) | 2020.03.27 |
---|
Comments