MySQL 基礎篇
數據准備:
CREATE TABLE `teacher` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4; insert into `teacher` (`id`, `name`, `age`) values('1','seven','18'); insert into `teacher` (`id`, `name`, `age`) values('2','qingshan','20'); insert into `teacher` (`id`, `name`, `age`) values('3','zhangsan','33');
比如我們對表中的數據先按照年齡,然后按照姓名排序,怎么寫 SQL 呢?
SELECT * FROM teacher ORDER BY age, name;
這里需要注意的是,對於上述例子中的輸出,僅在多個行具有相同的 age 值時才對老師按 name 進行排序。如果 age 列中所有的值都是唯一的,則不會按 name 排序。
比如我們需要對表中的數據先按年齡降序,然后按姓名升序排序,怎么寫 SQL 呢?
SELECT * FROM teacher ORDER BY age DESC, name;
可以在姓名 name 字段后面加上 ASC(升序) 也可以不加,因為升序是默認的(如果既不指定 ASC 也不指定 DESC ,則假定為 ASC )。
這里需要注意的是,DESC 關鍵字只應用到直接位於其前面的列名,在上例中,只對 age 列指定 DESC ,對 name 列不指定。因此,age 列以降序排序,而 name 列(在每個價格內)仍然按標准的升序排序。在多個列上降序排序 如果想在多個列上進行降序排序,必須對每個列指定 DESC 關鍵字。