問題是這樣的,當咱們按由大到小的順序排序一組數字的時候,它應該如此:wordpress
- 9800
- 8000
- 900
但若是是這些數字是以String類型存儲的話,直接排序的結果會是這樣:post
- 9800
- 900
- 8000
固然多數狀況下咱們會把數字存儲爲數字型,就可避免這一問題。但仍是有一些情形,數字被存儲爲String。code
好比wordpress的postmetas表,它的meta_value已經固定了就是String。當咱們須要把meta_value按數字大小排序的時候,直接寫order by meta_value就不能達到咱們所須要的目的。排序
如class
SELECT meta_value FROM postmeta WHERE meta_key="count" ORDER BY meta_value DESC;
獲得的結果:meta
- 9800
- 900
- 8000
解決的方法是,在排序語句裏把meta_value轉成數字再排序,寫做-meta_value
。方法
如word
SELECT meta_value FROM postmeta WHERE meta_key="count" ORDER BY -meta_value ASC;
獲得的結果:di
- 9800
- 8000
- 900
此時採用的是按meta_value的負值排序,因此如需獲得由大到小的效果,須要使用ASC而非DESC。固然也能夠直接用--meta_value DESC
。co
如
SELECT meta_value FROM postmeta WHERE meta_key="count" ORDER BY --meta_value DESC;
獲得的結果同樣是:
- 9800
- 8000
- 900