mysql如何用order by 自定義排序

2021-08-20 13:10:44 字數 741 閱讀 8452

原表 user:

id  name   roleid

1    aaa     1

2    bbb     2

3    ccc     3

4    ddd     4

5    eee     51,mysql可以通過field()函式自定義排序,格式:field(value,str1,str2,str3,str4),value與str1、str2、str3、str4比較,返回1、2、3、4,如遇到null或者不在列表中的資料則返回0.

例如:select * from user order by field(roleid,2,3,4,1,5);

結果:id  name   roleid

2    bbb     2

3    ccc     3

4    ddd     4

1    aaa     1

5    eee     5

2,locate(substr,str)函式返回子串substr在字串str中第一次出現的位置,可以根據該函式進行排序

例如:select * from user order by locate(id,'2,3,1,5,4');

結果:id  name   roleid

2    bbb     2

3    ccc     3

1    aaa     1

5    eee     5

4    ddd     4

MySQL如何優化ORDER BY

某些情況中,mysql可以使用乙個索引來滿足order by子句,而不需要額外的排序。即使order by不確切匹配索引,只要where子句中的所有未使用的索引部分和所有額外的order by 列為常數,就可以使用索引。下面的查詢使用索引來解決order by部分 某些情況中,mysql可以使用乙個...

MySQL 16 order by如何運作

order by 根據提供的字段進行排序 用法 order by column asc 預設 desc limit 從結果集上再進行刷選 用法 limit offset rows。如下語句建表 給city建索引 create table a id int 11 not null,name varch...

mysql的orderby是如何工作的

1.建表語句 create table t id int 11 not null,city varchar 16 not null,name varchar 16 not null,age int 11 not null,addr varchar 128 default null,primary k...