2011-02-22 5 views
3

:MySQL의 ORDER 내가 사용하는 쿼리 사용하고

ORDER BY score DESC; 

'점수'단지도 음수가 될 수있는 숫자 값을 보유하고 있습니다. 그들은 올바른 순서로 표시되지 않는 것 같습니다. 음수는 양수보다 위에 나타날 수 있습니다.

사람이 어떻게 이런 식으로이를 표시하는 데 사용한다 쿼리 알고 있나요 :

  • 10
  • 5
  • 1
  • -1
  • -5
  • -10

그리고 또한 이 작업을 정상적으로 수행하십시오.

* 1 
* 10 
* 11 
* 123 
* 1234 
* 2 
* 25 
* 253 
* 34 

감사합니다.

+4

'점수'는 어떤 날짜 유형입니까? 숫자 값을 포함하지만 ** 열 유형 ** 숫자입니까? –

+0

보이지 않습니다. 그 결과는 사전 순으로 정렬됩니다. – GolezTrol

+0

'score' 열은 숫자가 아닌 텍스트입니다. – ChrisJ

답변

5
order by cast(score as int) desc; 

숫자 데이터를 문자열 데이터 형식으로 저장하는 것으로 보입니다. 점수를 숫자 데이터 유형 (예 : int)으로 만드는 것이 좋습니다.

+0

'score'은 (는) 데이터베이스에서 * int *입니다. – Tom

+0

전체 검색어를 표시 할 수 있습니까? – mellamokb

+0

예 '$ query = "메시지 선택, 점수, IP, 날짜, 이름, 웹 사이트, id FROM'messages' 삭제 된 곳 = 0 AND date> DATE_SUB (NOW(), INTERVAL 1 DAY) ORDER BY'score' DESC "; ' – Tom

0

점수에 대한 귀하의 데이터 유형은 아마도 char 유형입니다. 올바른 정밀도로 부호있는 정수 또는 십진수로 데이터 유형을 올바르게 지정하면이 문제를 해결할 수 있습니다.

CREATE TABLE `test` (
    `score` INT(10) NULL 
) 
COLLATE='latin1_swedish_ci' 
ENGINE=InnoDB; 

select * from test order by score desc; 

그리고 내 데이터베이스에서 덤프 : 나는 음수를 받고 어떤 문제가 아니에요

+0

'점수'필드는 * int *입니다. – Tom

0

은 최소한에 ... 여기 참조를 위해, 내 CREATE 코드 및 쿼리의 가장 큰 주문할 수 : 이 도움이

INSERT INTO `test` (`score`) VALUES (10); 
INSERT INTO `test` (`score`) VALUES (5); 
INSERT INTO `test` (`score`) VALUES (1); 
INSERT INTO `test` (`score`) VALUES (-1); 
INSERT INTO `test` (`score`) VALUES (-5); 
INSERT INTO `test` (`score`) VALUES (-10); 
INSERT INTO `test` (`score`) VALUES (-11); 
INSERT INTO `test` (`score`) VALUES (7); 

희망 ...

그것은 사용 분야를 주조에 의해 주조 VARCHAR로 주문 가능