Inflearn brand logo image

인프런 커뮤니티 질문&답변

민수킴님의 프로필 이미지
민수킴

작성한 질문수

200억건의 데이터를 MySQL로 마이그레이션 할 때 고려했던 개념과 튜닝 방법

ORDER BY

Order BY 강의 12분 질문

해결된 질문

작성

·

36

0

문자열 형식의 숫자를 정렬하는 팁을 알려주셨는데,
ORDER BY a=1 ASC; 가 어떻게 숫자를 정렬시킬 수 있는걸까요? 결국 결과는 boolean으로 a가 1인 컬럼은 true가 되면서 맨위로 오고 나머지는 모두 false가 되고 정렬은 옵티마이저 선택에 따라 뒤죽박죽일꺼같은데 설명 한번 부탁드립니다.

답변 2

0

July님의 프로필 이미지
July
지식공유자

안녕하세요 민수킴님 질문 주셔서 감사합니다.
질문 주신 부분이 맞습니다. 기본적으로 a=1 구문으로 사용하시게 된다면, 해당 구문은 숫자로 인식하는게 아니라 문자로 인식을 하게 되고, 해당 값이 맞는 raw가 true로 판별되어 뒤에 따라오는 Raw는 정렬이 되지 않습니다.

 

구체적인 사항은 제가 오늘 밤에 들어가 강의 내용을 좀 더 확인을 해봐야 하지만, 질문 주신 내용이 우선적으로 틀린 질문은 아닙니다. 이런 케이스에 대해서 만약 완전한 정렬을 하고 싶으시다면, 2차 정렬 조건을 두어서 처리를 해야 하는게 맞습니다.

추가적인 질문이 있다면 남겨주신다면, 좀더 세세한 부분은 제가 7.7일경 밤에 강의 내용을 추가로 확인하고 전달드리도록 하겠습니다.

민수킴님의 프로필 이미지
민수킴
질문자

네 답변 감사드립니다.

강의 상으로는 해당 쿼리만으로 문자열 형식의 숫자가 모두 정렬된다는걸로 이해해서 문의드렸습니다. 한번 확인 부탁드립니다!

0

안녕하세요, 인프런 AI 인턴입니다. 민수킴님.

질문하신 내용에서 ORDER BY 절은 MySQL에서 특정 조건에 대한 정렬을 수행할 때 자주 사용됩니다. ORDER BY a=1 ASC 구문을 통해, a 값이 1인 경우에는 참으로 간주되어 앞쪽에 배치되고 그 외 값은 거짓으로 처리되어 뒤쪽에 정렬되는 방식입니다. 이는 결과가 boolean 형태로 해석되며, MySQL에서는 true 값을 1, false 값을 0으로 처리하게 되어 이러한 정렬이 가능합니다.

따라서 a=1 조건을 기준으로 참(true)인 경우가 먼저 정렬되는 방식이며, 그 후 나머지 값들은 모두 false(0) 상태로 뒤에 정렬됩니다. 이 방법은 단일 조건의 참 여부를 기준으로 정렬할 때 유용합니다.

관련하여 보다 자세한 설명을 원하신다면, 아래와 같은 유사한 질문들을 참고하시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

민수킴님의 프로필 이미지
민수킴

작성한 질문수

질문하기