2014-01-30 3 views
1

저는 오랫동안 MySQL을 사용해 왔으며이 문제를 다뤄 본 적이 없습니다. 응용 프로그램의 점수를 저장하는 테이블이 있습니다. 웬일인지 score ASC로 정렬하면 가장 높은 점수가 가장 먼저 표시되고 가장 낮은 점수는 마지막으로 표시됩니다. 아래 스크린 샷을 참조하십시오MySQL이 데이터를 올바르게 정렬하지 않습니다.

여기

enter image description here

내 질문 : 왜 이런 일이에

SELECT category, subject, max(score) as score FROM scores 
WHERE customer_id = 1086 AND category = 'Business' 
GROUP BY subject ORDER BY score ASC 

어떤 생각?

+1

이것은 '점수'가 숫자가 아닌 문자열로 처리되기 때문에 발생할 수 있습니다. – user2989408

+0

변경할 방법이 있습니까? – three3

+0

여기서 테이블 구조를 덤프 할 수 있습니까? 정렬하는 동안 잘못된 데이터 유형이 미쳐 버린 경우가 있습니다. – Elshan

답변

4

문자열 (예 : varchar/text)에서 숫자 (예 : int)로 점수의 데이터 유형을 변경하십시오. 그것은 정렬 문제를 해결해야합니다.

값을 문자열 기준으로 (알파벳 순으로) 정렬하면 '60'의 '6'이 '8'앞에옵니다.

일시적인 해결 방법으로 order by score+0 asc을 시도해보고 값을 숫자로 변환 해보십시오.

+0

감사합니다! 이것은 나를 위해 일했습니다! – three3

+0

답변으로 표시가 질문이 닫혀 있다는 것을 의미하지는 않습니다. D –

0

CAST(max(score) AS INTEGER) as Score을 선택한 다음 ORDER BY Score을 선택하십시오.

관련 문제