2017-10-29 58 views
0

例子:數據排序後的字母,然後再數字

32 BB 
12 A 
84 H 
13 H 
34 C 
16 C 
115 H 
18 C 

我想訂購他們是這樣的:

12 A 
32 BB 
16 C 
18 C 
34 C 
13 H 
84 H 
115 H 

這裏是我試過到目前爲止:

SELECT * 
FROM people 
ORDER BY IF(data_name RLIKE '^[a-z]', 2, 3), data_name 

SQL查詢按類似於未排序的方式對它們進行排序。我怎樣才能做到這一點?

+0

嘗試ORDER BY IF(DATA_NAME RLIKE '^ [az]' 可以,4,2),DATA_NAME – Grantly

+1

什麼數據庫您使用的?數據是在一列還是兩列? –

+0

同樣的結果,重要。我想我正在使用MariaDB,Gordon。無論是那個還是InnoDB。我在發佈問題之前試圖查看它,但沒有找到它:/ – Erik

回答

1

如果數據是在兩列(這是我如何解釋的問題和樣本數據),然後簡單地做:

order by col2, col1 

如果數據是在一列,然後我會從rlike猜測您正在使用MySQL,你可以這樣做:

order by substring_index(col, ' ', -1), substring_index(col, ' ', 1) + 0 
+0

非常感謝!你的答案完美無缺!如果我有兩列的值,我不會問你們;) – Erik

+0

但還有一個問題。我該如何對它進行分類?所以'115 H'在列表中首先出現,並且'12 A'最後一次? – Erik

+1

@Erik。 。 。您在每個按'order by'鍵後放置'DESC'。 –

相關問題