Mysql基础(5) 排序查询(order by字句)

本文详细讲解了如何在SQL查询中使用ORDER BY对单列、多列、表达式和函数进行升序或降序排序,包括默认行为和多列排序逻辑。理解并掌握这些排序操作有助于优化查询结果的呈现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拍讯查询操作查询列表中的字段,控制其按照升序(ascend)或降序(descend)输出。基本语法如下

select
	查询列表
from
	表名
[where 字句]
order by 排序目标  asc|desc

排序或降序缺省状态下,默认升序。排序目标有单列表字段、多列表字段、表达式、函数,其示例如下。
order by字段一般是对查询结果进行最后的排序操作,是输出查询结果的最后一次操作,因此其位置一般应在其他sql子句的后面。在mysql中,order by字句只在limit字句前面,余下都是在其他字句后面。

  • 单列表字段

    SELECT 
    	last_name
    FROM 
    	employees
    ORDER BY last_name //升序排序,此时acs可以缺省
    
    SELECT 
    	last_name
    FROM 
    	employees
    ORDER BY last_name DESC //降序排序
    
  • 多列表字段。多列情况下,order by后的字段顺序影响排序逻辑。假设按照 (A DESC,B ASC)排序,mysql先对前面的字段A排序,然后对排序结果中字段A相同的数据行按照字段B排序,随后输出结果。

    注意位置靠后的排序字段只对位置在前的排序字段的相同数据行排序,因此除第一个排序字段外,其后的排序操作较少。

    SELECT 
    	LENGTH(last_name) AS 长度 ,salary
    FROM 
    	employees
    ORDER BY last_name DESC,salary ASC  -- 先对长度降序排序,再对结果中长度相同的行按照salary升序排序。
    
  • 表达式。若对表达式起别名,别名也可以作为排序目标,作用和表达式相同。

    SELECT 
    	LENGTH(last_name) AS 长度
    FROM 
    	employees
    ORDER BY LENGTH(last_name) DESC -- 表达式作为排序目标
    # 上下两个排序结果一样
    SELECT 
    	LENGTH(last_name) AS 长度
    FROM 
    	employees
    ORDER BY 长度 DESC --表达式的别名作为排序目标
    
  • 函数。
    函数也可认为表达式的一种。实例参考表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值