• SQL查询系列之四:SQL查询结果集排序

    发布:51Code 时间: 2017-11-08 10:31

  • 我们经常会有这样的需求,取出按照某个字段进行排序后的记录结果集,这就用到了数据库的排序操作,用关键字ORDER BY来实现,语法如下: SELECT * FROM tablename [WHERE CONDITION] [ORDER BY fi...

  • 我们经常会有这样的需求,取出按照某个字段进行排序后的记录结果集,这就用到了数据库的排序操作,用关键字ORDER BY来实现,语法如下:

    SELECT  *  FROM  tablename  [WHERE  CONDITION]  [ORDER  BY  field1  [DESC|ASC],           field2
           [DESC|ASC],……fieldn [DESC|ASC]]

    其中,DESC和ASC是排序顺序关键字,DESC表示按照字段进行降序排列,ASC则表示升序

           排列,如果不写此关键字默认是升序排列。ORDER  BY后面可以跟多个不同的排序字段,并且每个排序字段可以有不同的排序顺序。
     
           示例1:把emp表中的记录按照姓名字典顺序进行显示:

    SELECT * FROM emp ORDER BY ename;

    查询结果如下:

    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
           ----- ---------- --------- ----- ----------- --------- --------- ------
            7876 ADAMS      CLERK      7788 1987/5/23     1100.00               20
            7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30
            7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30
            7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10
            ……
            7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30
           14 rows selected

    如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,以此类推。

           示例2:把emp表中的记录按照部门编号deptno字段排序再按工资从高到排序。

    SELECT * FROM emp ORDER BY deptno ASC,sal DESC;

    查询结果如下:

    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
           ----- ---------- --------- ----- ----------- --------- --------- ------
            7839 KING       PRESIDENT       1981/11/17    5000.00               10
            7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10
            7934 MILLER     CLERK      7782 1982/1/23     1300.00               10
            ……
            7900 JAMES      CLERK      7698 1981/12/3      950.00               30
           14 rows selected


  • 上一篇:SQL查询系列之三:SQL条件查询

    下一篇:SQL查询系列之五:SQL分页查询

网站导航
Copyright(C)51Code软件开发网 2003-2018 , 沪ICP备16012939号-1