zoukankan      html  css  js  c++  java
  • SQL系列(五)—— 排序(order by)

    对查询结果进行排序是日常应用开发中最为常见的需求,在SQL中通过order by实现。order by是select语句中一部分,即子句。

    1.order by

    1.1 单列排序

    其实,检索出的数据并不是随机显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示,这有可能是数据最初添加到表中的顺序。但是,如果数据随后进行过更新或删除,那么这个顺序将会受到DBMS重用回收存储空间的方式的影响。

    子句(clause)
    SQL语句由子句构成,有些子句是必需的,有些则是可选的。一个子句通常由一个关键字加上所提供的数据组成。子句的例子有我们在前一
    课看到的SELECT语句的FROM子句。

    为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。

    从以上可以看出:

    • order by是select的子句
    • 可选
    • 可以作用在多个列上

    注意点

    1. ORDER BY子句的位置:
      在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。如果它不是最后的子句,将会出现错误消息

    2. 通过非选择列进行排序:
      通常,ORDER BY子句中使用的列将是为显示而选择的列。但是,实际上并不一定要这样,用非检索的列排序数据是完全合法的

    1.2多列排序

    order by不仅可以作用在单列上进行排序,还可以实现对多列排序。要按多个列排序,简单指定列名,列名之间用逗号分开即可(就像选择多个列时那样)。
    排序的优先级:按照order by后面紧随的列依次递减。

    1.3指定排序方向

    数据排序不限于升序排序(从A到Z),这只是默认的排序顺序。还可以使用ORDER BY子句进行降序(从Z到A)排序。为了进行降序排序,必须
    指定DESC关键字。默认是升序。

    2实践

    2.1 order by简单使用

    如果不排序的查询,如:

    select * from student;
    

    结果如:

    name age
    lxy 20
    son 1
    wly 18

    如果进行排序:

    select * from student order by age;
    

    结果如:

    name age
    son 1
    wly 18
    lxy 20

    根据age进行了从大到小的排序,即升序排序。

    再来看下排序不检索的列:

    select name from student order by age;
    

    结果如:

    name
    son
    wly
    lxy

    检索出的结果和上面的顺序保持一样。

    2.2多列排序实践

    select * from student;
    

    结果如下:

    name age
    lxy 20
    lxy 10
    lxy 25
    son 1
    wly 18
    wly 16

    如果按照name,age进行排序:

    select * from student order by name, age;
    

    结果如下:

    name age
    lxy 10
    lxy 20
    lxy 25
    son 1
    wly 16
    wly 18

    从以上的两个结果中可以看出优先级。先对结果按照name排序,然后再对相同name的结果,按照age排序。

    2.3指定排序方向

    select * from student order by name;
    select * from student order by name asc;
    

    以上两条查询结果一致:

    name age
    lxy 20
    lxy 10
    lxy 25
    son 1
    wly 18
    wly 16

    如果按照降序排序:

    select * from student order by name desc;
    

    结果如下:

    name age
    wly 18
    wly 16
    son 1
    lxy 20
    lxy 10
    lxy 25
    参考

    《SQL必知必会》

  • 相关阅读:
    VBS控制鼠标移动和点击(附源代码下载)
    用VBS控制鼠标的实现代码(获取鼠标坐标、鼠标移动、鼠标单击、鼠标双击)
    vbs鼠标方法——模拟鼠标按键
    vbs 获取当前目录的实现代码
    如何在VBS脚本中显示“选择文件对话框”或“选择目录对话框”
    loadrunner使用socket协议来实现客户端对服务器产生压力实例。(通过发送心跳包,达到连接多个客户端的目的)
    loadunner使用socket协议来实现多客户端连接同一服务器脚本(使用到IP欺骗技术)
    Loadrunner中参数和变量的使用
    LoadRunner学习知多少--IP欺骗使用
    Linux下tar bz gz等压缩包的压缩和解压
  • 原文地址:https://www.cnblogs.com/lxyit/p/9304093.html
Copyright © 2011-2022 走看看