프로그래밍
첫 페이지 랜덤 글 회원가입 로그인
비공개 손님 … 2019-10-24 15:23:04
URL 복사 모바일 화면
mysql order 기능 질문 입니다

mysql 정렬 기능 질문입니다.

안녕하세요
AA 테이블(그외 여러테이블을 조인)에 A 라는 필드가 있고 데이터가
K1~K104까지 있다고 할 때
아무 정렬 조건 없이 기본값 조회 시
K102
K102
K104
K12
K19
.
.
K2
K95
이런식으로 정렬이 되고,
ORDER BY AA *1 DESC, ORDER BY AA *1 ASC
로 정렬 시 에도 위와 같이 정렬이 변하지 않고 그대로 조회가 됩니다.

원하는 결과값은 오름차순으로 정렬된 수치인데 데이터가 문자+숫자 인 경우 정렬 필드 뒤에 *1 을 넣어주면 된다고 해서 넣어봤는데 정렬이 되지 않습니다.

정렬되는 데이터를 봤을때 19 다음 2 그다음 21..29 3 31 이런식으로 되는것으로 보아 첫번째 숫자만 정수, 2번쨰 자리부터는 소수점으로 보고 정렬이 되는거 같습니다.
102 는 1.02 로 보는것이겠지요

그래서 이렇게 정렬이 되는거 같은데 관련해서 문자 없이 숫자 기준 오름차순으로 정렬되게 하려면 어떻게 하면 좋을지 질문드립니다.



질문 | 3918명이 읽었어요. 18.97.14.83

0
1 비공개 손님 … 2019-10-24 17:26:46
K라는 문자를 없애고 해보세요.
2 비공개 손님 … 2019-10-24 17:53:21
1. Key order
2. Schema collation
3 비공개 손님 … 2019-10-24 17:56:12
아 가만히보니 이건 그냥 문자열 Natural order 문제네요.

데이터 설계당시 정렬을 위한 숫자 컬럼을 안배하지 않았다면


https://stackoverflow.com/questions/4686849/sorting-varchar-field-numerically-in-mysql



이런걸로 가능하긴 한데 CPU/MEM 순간사용량이랑 성능하락은 불가피
4 비공개 손님 … 2019-10-24 18:20:09
정렬용 필드를 새로 만들어야할 간지...
5 비공개 손님 … 2019-10-24 18:20:53
설계당시 정렬을 위한 숫자 컬럼을 안배하는게 정석일듯
6 비공개 손님 … 2019-10-25 00:07:53
데이터가 많으면 답도 없지 싶은데요. 지금이라도...
7 비공개 손님 … 2019-10-25 00:11:49
6 지금이라도 테이블 드랍(미침)
8 비공개 손님 … 2019-10-25 01:01:47
7/ 테이블 드랍은 제일 나중에 사용하는 필살기㈵
9 비공개 손님 … 2019-10-25 15:11:16
virtual index ㄱㄱ
성능좀 필요하면 generated always ㄱㄱ
10 비공개 손님 … 2019-10-30 13:37:14
쿼리할때 정규식으로 숫자가 아닌건 없애고,
한번 더싸서 order by 하면 되긴 하겠네요
댓글을 작성하실 수 없습니다.
(권한이 없는 회원레벨)
목록으로
이용약관 | 광고/제휴 | 개인정보취급방침 | 문의/신고 | 모바일 TE31 | 서버 부하 : 15.75%
실시간 Issue 커뮤니티 TE31 [알지롱] ⓒ 2002-2026
TOP arrow_upward