ASC 是对结果集按照字段从小到大排序(升序),以 teacher 表为例,将查询出来的所有结果集按照年龄 age 从小到大排序:
执行结果如下图:
DESC 是对结果集按照字段从大到小排序(降序),以 teacher 表为例,将查询出来的所有结果集按照年龄 id 从大到小排序:
执行结果如下图:
以 teacher 表为例,将查询出来的结果集按照 age 从大到小排序之后,再按照 id 字段从小到大排序:
执行结果如下图:
前面排序的 age 和 id 字段是 int 类型,为了演示方便这里先插入几个 name 字段为英文名的教师测试数据,并对 name 字段排序,插入数据 SQL 语句如下:
对查询结果集按照 name 字段 ASC 升序排序:
执行结果如下图:
本小节介绍了如何使用 ORDER BY 对查询结果集按照值字段排序,其中包括 ASC 升序和 DESC 降序,需要注意的是各种数据的字符集可能不同,如中文字符编码 GBK编码、utf-8编码, 若需要经常对字符串类型字段进行排序,可以给该字符串字段加上普通 Bree索引,二级索引树字符串默认存储方式是按照字符集升序存储的(MySQL8.0 可自定义排序存储方式),所以有索引的字段排序性能比没有索引的字段排序性能好。
MYSQL中查询表中按字段降序排列的前N条记录模式:SELECT 字段名[ , 字段名...] FROM 表名 WHERE 条件 LIMIT 数量 ORDER BY 字段名 DESC
例如:
1
select id,name,email from test where age <19 limit 5 order by id desc
上面例子从test表查询所有age小于19的按id降序排序的前5条记录的id,name,email信息。
LIMIT限制查询数量,ORDER BY指出按什么排序,DESC表示按降序排序。
如下图:
图中为t_book原始数据。
按你的要求是count降序,每个lessonid仅取一条数据。
你把你的要求调整下,每个lessonid仅取一条数据,可以理解为对lessonid进行分组,按照count字段降序,即分组后取每组count的最大值。
SELECT id,a.`lessonid`,MAX(a.`count`) mc FROM t_book a GROUP BY a.`lessonid`
如需对得出的结果按照count再次进行排序,外面加一层select,重新用下order by 进行排序就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)