MySQL排序查询
一、语法结构:
SELECT
查询列表
FROM 表
WHERE 条件
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