1.单字段排序
语法:SELECT *|{字段列表} FROM 数据表名 ORDER BY 字段名 [ASC | DESC];
#默认升序
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理FROM mydb.cj_table WHERE ROUND((yw+sx+yy+wl)/4,1)>=80 ORDER BY yy;
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1) AS 均分 FROM mydb.cj_table WHERE ROUND((yw+sx+yy+wl)/4,1) >=80 ORDER BY yy ASC;
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1) AS 均分 FROM mydb.cj_table WHERE ROUND((yw+sx+yy+wl)/4,1) >=80 ORDER BY yy DESC;
2.多字段排序
语法:SELECT *|{字段列表} FROM 数据表名 ORDERBY 字段名1 [ASC | DESC] [,字段名2 [ASC | DESC]]…;
多字段排序首先按照字段名1进行排序,当字段1的值相同时,再按照字段2进行排序,依次类推。
根据语法进行案例演示并讲解。若排序字段值为NULL,则系统会将其看作是最小值。
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1) AS 均分 FROM mydb.cj_table WHERE ROUND((yw+sx+yy+wl)/4,1) >=80 ORDER BY yy DESC,sx DESC;
补充:数据如何按照中文拼音正确排序,解决办法是使用CONVERT(字段名 USING gbk) 函数强制让指定的字段按中文排序。
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理 FROM mydb.cj_table ORDER BY NAME DESC;
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理 FROM mydb.cj_table ORDER BY CONVERT(NAME USING gbk) DESC;