天天看點

MySQL必知必會——第5章 排序檢索資料

1 order by子句基本介紹

子句:SQL語句由子句構成,有些子句是必須的,有些子句是可選的。

例如:select語句的from子句

為了明确地排序用select語句檢索出的資料,可使用order by子句

order by子句可以取一個或多個列的名字,據此對輸出進行排序

可以通過非選擇列進行排序

比如:一個學生表(student)包含學号(sID)、成績(grade)兩個屬性

可以輸入如下指令:select sID

from student

order by grade;

這句指令就是通過非選擇列進行排序,就是按照學生成績高低來輸出學生的學号

2 按多個列排序

指令格式:select 列名 from 表名 order by 列名1,列名2

指令含義:先按照列名1進行排序,如果列名1相同,在按照列名2進行排序

比如:一個學生表(student)包含學号(sID)、成績(grade)、學生姓名(name)屬性

想輸入按照學生成績高低排列的學生姓名,如果學生成績相同,按照學号大小排列學生姓名

指令:select name from student order by grade,sID;

注意:當且僅當表中包含成績相同的學生記錄時,才會按照學号排序;

如果表中不包含成績相同的學生記錄,按照學号排序不起作用

3 按指定方向排序

預設是升序排序(ASC),如果采用降序排序,必須指定DESC

指令格式:select 列名 from 表名 order by 列名1 DESC,列名2;

指令含義:先将資料按照列名1降序排列,如果有記錄存在列名1的取值相同,再按照列名2升序排列(未特殊指明即是升序排列)

注意:DESC隻對其緊跟的列名起作用,如果要設定多個列進行降序排序,必須對每個列指定DESC關鍵字

關于子句的順序:使用子句的次序不對将産生錯誤消息。order by子句必須位于from子句之後,limit子句必須位于order by子句之後

繼續閱讀