1. 程式人生 > >mysql order by不起作用各種型別排序說明

mysql order by不起作用各種型別排序說明

當你有一天發現order by不起作用,

首先不要懷疑跟索引啊,主鍵啊,反正一堆亂七八糟的想法。

其實排序正常只有int型別才起作用

所以你只需要看一看排序的欄位型別就好

下面說說幾種排序

數字 型別:order by 欄位  排序方式

字串型別:order by cast(欄位 as char)

字串 型別的數字:1:order by (欄位+0) 排序方式         2: order by cast(欄位 as unsigned)

列舉型別:預設是按照列舉的下標排序的,如果想按照字串排序跟字串排序是一樣的使用

按照指定的資料方式排序:order by field(欄位,'排序值','排序值','')      解釋:排序值可以一隻加,第一個是欄位就好,排序值可以是空,但是排序值相同時,按照找的第一個

json型別:order by cast(JSON_EXTRACT(json欄位, '$.json欄位屬性名') as 序號型別)  注:序號型別unsigned(數字) char(字串) json型別排序在5.7中才有效

例如:

有欄位parame 的json欄位 json裡面有id,sex,hobby

order by cast(JSON_EXTRACT(parame ,'$.id') as unsigned)