我使用它使用的查詢:MySQL的ORDER BY數值問題負數
ORDER BY score DESC;
「分數」只是持有的數值,也可以是負的。他們似乎沒有以正確的順序顯示。負數可能出現在正數之上。
有誰知道查詢我應該使用像這樣顯示出來:
- -1
- -5
- -10
而且還對s頂部他們這樣做:
* 1
* 10
* 11
* 123
* 1234
* 2
* 25
* 253
* 34
謝謝。
我使用它使用的查詢:MySQL的ORDER BY數值問題負數
ORDER BY score DESC;
「分數」只是持有的數值,也可以是負的。他們似乎沒有以正確的順序顯示。負數可能出現在正數之上。
有誰知道查詢我應該使用像這樣顯示出來:
而且還對s頂部他們這樣做:
* 1
* 10
* 11
* 123
* 1234
* 2
* 25
* 253
* 34
謝謝。
order by cast(score as int) desc;
看起來您正在將數字數據存儲在字符串數據類型中。將分數設置爲數字數據類型會更好,如int
。
我並沒有得到負數的任何問題,從最大的,責令至少......這是我的創建代碼和查詢,供大家參考:
CREATE TABLE `test` (
`score` INT(10) NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
select * from test order by score desc;
而且從我的數據庫轉儲:
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通過鑄造場訂購:
ORDER BY CAST(`table.field` AS SIGNED) DESC
其中,SIGNED將把varchar轉換爲整數(可以是負值)。
的指南,請訪問:http://www.kreci.net/web-development/sort-varchar-as-int-in-mysql-query/
什麼日期類型是'score'。它保存數值,但它是**列類型**數字? – 2011-02-22 22:37:59
似乎沒有。這些結果按字母順序排序。 – GolezTrol 2011-02-22 22:40:46
我敢打賭'分數'欄是文本的,不是數字... – ChrisJ 2011-02-22 22:40:57