如何按AlphaNumeric順序排序爲MySQL;按字母數字順序對MySQL列進行排序
假設我有一個這樣的數據表。
Name + ID
AA | 10
AE | 2
AD | 1
當我排序列ID的結果是
1
10
2
但是,當我在選擇語句添加+ 0這樣的列ID
SELECT * FROM tableName ORDER BY columnName + 0;
1
2
10
但對於列名的結果是這
AA
AE
AD
我已經提到這個鏈接,但它不適合我。 Alphanumeric Order By in Mysql
注意:所有列類型都是varchar,我無法預測要插入的數據。 我知道我的問題很簡單,但仍然無法得到我想要的結果。 另外我不能使用Java對結果進行排序,因爲我使用了LIMIT。 我會明白任何help.Thanks
附加信息:(樣品表進行排序上的名稱和ID基) 的頭1是設置爲另一表中的名稱,並用HEADER2 W/C同樣是ID
CREATE TABLE IF NOT EXISTS `sort` (
`header1` varchar(200) DEFAULT NULL,
`header2` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `sort` (`header1`, `header2`) VALUES
('AA', '10'),
('AE', '2'),
('AD', '1'),
('AD', '1'),
('AF', 'a'),
('AF', 'a1'),
('1', 'a1');
當你不能使用Java時,你應該刪除標籤。您還應該更加精確,例如告訴我們您期望的數據。那麼`(AA,5,A6,B4,9C)`,你是否也需要對它進行分類? – maaartinus 2011-02-03 13:24:00
字符串的排序與數字不同。你想排序你的字符串列像一個數字。如果您只在該列中存儲數字,那麼您應該將其設置爲數字數據類型,並且您的問題將消失。 – 2011-02-03 13:35:11
我不能使用Java,因爲我需要通過LIMIT得到結果。這是由於我的分頁編碼。我使用LIMIT來加速查詢。而且我還需要根據列進行排序。是的,我需要這樣排序(AA,F,A6,B4,9C) – ace 2011-02-03 13:38:05