(五)MySQL排序查询

MySQL排序查询

一、语法结构:

SELECT 
	查询列表 
FROMWHERE 条件 
ORDER BY 
	排序字段 
ASC/DESC
  • ASC 升序 ,一般asc可以省略,默认以升序排列。
  • DESC 降序。

二、经典案例

案例1:查询学生信息,要求按生日从高到低排序。

SELECT * FROM tstudent ORDER BY Birthday DESC

案例2:查询学生编号>=90的学生信息,要求按生日排序

SELECT * FROM tstudent WHERE StudentID>=90 ORDER BY Birthday DESC

三、思路解析案例

案例3:查询学生编号>=90的学生信息,要求按年龄排序

SELECT * FROM tstudent

我们查所有字段,发现表中没有年龄。怎么办呢?
在这里插入图片描述
思路:
年龄=当前年份-出生年份

SELECT CURDATE()   #查询当前日期

在这里插入图片描述
有了当前日期之后,还不行。我们必须把后面的-06-11过滤掉。因为我们始终要记得我们只要年份。

SELECT YEAR(CURDATE())#提取年份

在这里插入图片描述
再来测试一下常量能不能提取出来年份,随便输入一个2013-8-24

SELECT YEAR('2013-8-24') #提取生日中的年份

在这里插入图片描述
成功提取。

提取好年份之后。我们就用“当前年份-常量的年份”,看能不能出来结果。

SELECT YEAR(CURDATE())-YEAR('2013-8-24')   #年份减去年份

在这里插入图片描述
现在我们直接把常量的2013-8-24直接替换成生日字段

SELECT 
	YEAR(CURDATE())-YEAR(`Birthday`) AS age
FROM 
	`tstudent`;

在这里插入图片描述
现在我们根据题目要求进行回答

SELECT 
	`Sname` AS 姓名,
	`Birthday` AS '出生日期',
	(YEAR(CURDATE())-YEAR(`Birthday`)) AS '年龄' 
FROM 
	`tstudent`
ORDER BY '年龄' DESC

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章