主要学习:

1.以指定的次序返回查询结果
2.按多个字段排序
3.按字串排序
4.处理排序空值
5.根据数据项的键排序
具体实例1---以指定的次序返回查询结果
n使用ORDER BY子句可以对结果集进行排序 {!默认情况下,ORDER BY以升序方式排序,因此ASC子句是可选的。DESC表示降序排列!}
SELECT ENAME,JOB,SAL
FROM EMP
WHERE DEPTNO=10
ORDER BY SAL DESC;
n不一定要指定排序所基于的列名,也可以给出表示这列的编号。这个编号从1开始,从左到右依次对应SELECT列表中的各项目。例如: 
SELECT ENAME,JOB,SAL
FROM EMP
WHERE DEPTNO=10
ORDER BY 3 DESC;

ORDER BY子句中的3,与SELECT列表中的第3列对应,也就是SAL。{注意:不推荐使用列的编号进行排序}

具体实例2---按多个字段排序

SELECT  DEPTNO ,
ENAME ,
JOB ,
SAL ,
COMM
FROM EMP
WHERE DEPTNO<=20
ORDER BY SAL ASC,
COMM DESC
注意!!!在ORDER BY中,优先次序是从左到右。如果在SELECT列表中使用列的数字位置排序,那么,这个数值不能大于SELECT列表中项目的数目。

可以使用SELECT列表中没有的列来排序,但是在ORDER BY子句中必须显示地给出排序的列名。

如果在查询中使用GROUP BY或DISTINCT,则不能按照SELECT列表中没有的列来排序。

具体实例3---按字串排序

在ORDER BY子句中使用SUBSTRING函数:

SELECT DEPTNO ,
ENAME ,
JOB
FROM EMP
ORDER BY SUBSTRING(ENAME, LEN(ENAME),1) DESC ,
SUBSTRING(JOB,LEN(JOB),1) ASC;
也可以写成:ORDER BY LEFT(ENAME,1) DESC ,
LEFT(JOB,1) ASC;

使用DBMS的子串函数,可以很容易地按字符串的一部分来排序。要按照字符串的最后两个字符排序,首先要找到字符串的末尾(就是字符串的长度),并减去2。起始位置就是字符串中的倒数第2个字符。然后,获取从起始位置开始的所有字符。SQL Server在SUBSTRING中需要第3个参数来指定要获取的字符数。

具体实例4---处理排序空值

在EMP中根据COMM排序结果,但是这个字段可以有空值,需要指定是否将空值排在最前,或者将空值排在最后。

SELECT ENAME, SAL, COMM
FROM EMP
ORDER BY COMM;

结果:

具体实例4---处理排序空值

SELECT ENAME,
SAL,
COMM
FROM (SELECT ENAME, SAL, COMM,
CASE WHEN COMM IS NULL THEN 0
ELSE 1 END AS IS_NULL FROM EMP) X
ORDER BY IS_NULL DESC, COMM;

SELECT ENAME,
SAL,
COMM
FROM (SELECT ENAME, SAL, COMM,
CASE WHEN COMM IS NULL THEN 0
ELSE 1 END AS IS_NULL FROM EMP) X
ORDER BY IS_NULL DESC,
COMM DESC;

SELECT ENAME,
SAL,
COMM
FROM (SELECT ENAME, SAL, COMM,
CASE WHEN COMM IS NULL THEN 0
ELSE 1 END AS IS_NULL FROM EMP) X
ORDER BY IS_NULL, COMM;

SELECT ENAME,
SAL,
COMM
FROM (SELECT ENAME, SAL, COMM,
CASE WHEN COMM IS NULL THEN 0
ELSE 1 END AS IS_NULL FROM EMP) X
ORDER BY IS_NULL,
COMM DESC;

空值相关:

除非RDBMS提供了一种方式,可以很容易地将空值排在最前或排在最后,而不必在同列修改非空值(例如Oracle的情况),否则,就需要一个附加的列。多加1列的目的是(只是在查询中,不是在表中),可以判别空值,并将它们排在一起,放在最前面或最后面。对于非Oracle解决方案,下面的查询返回内联视图X的结果集:
SELECT ENAME,
SAL,
COMM,
CASE WHEN COMM IS NULL THEN 0
ELSE 1
END AS IS_NULL
FROM EMP;

根据IS_NULL的值,可以很容易地将NULL排在最前面或最后面,而不影响COMM如何排序

具体实例5---根据数据项的键排序

可以使用CASE表达式来动态改变如何对结果排序。传递给ORDER BY的值类似这样

SELECT ENAME,
SAL,
JOB,
COMM,
CASE WHEN JOB='SALESMAN' THEN COMM
ELSE SAL
END AS ORDERED
FROM EMP
ORDER BY ORDERED;

SQL Server order by语句学习回顾的更多相关文章

  1. SQL server 查看什么语句在使用临时表

    SQL server 查询那些语句在使用临时表 最近在日常的性能测试工作中发现,数据库端的IO读写比较大,有规律的2-8M的波动,数据库的版本为 SQL server 2008 sp3. 这些IO操作 ...

  2. 【转载】SQL Server - 使用 Merge 语句实现表数据之间的对比同步

    原文地址:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT ...

  3. Sql server的Merge语句,源表中如果有重复数据会导致执行报错

    用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说 ...

  4. SQL Server ---T-SQl基本语句

    T-SQL 是 SQL-Server 的结构化查询语言. 基本数据操作语言. 基础语句 先创建表 我后面的列子都是用的这一个表,列名啥的 就大概看看吧~~ 纯粹为了学习语句,语法~~所以先创建个表吧~ ...

  5. SQL Server 基本SELECT语句

    1.SELECT 和 FROM 语句 SELECT表示执行的是查询,接着需要更知道从哪边查询数据,FROM就是限制读取的数据在哪一个表或哪几个表中,这样就构成了一个基本语句. SELECT * FRO ...

  6. SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON

    对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间.执行时间.做了多少次磁盘读等. 如果DBA能够把问题语句单独测试运行,可以在运行前打开下面这三个开关,收集语句运行的统计信 ...

  7. SQL Server中CURD语句的锁流程分析

    我只在数据库选项已开启“行版本控制的已提交读”(READ_COMMITTED_SNAPSHOT为ON)中进行了观察. 因此只适用于这种环境的数据库. 该类数据库支持四种不同事务隔离级别,下面分别观察数 ...

  8. SQL Server与Oracle对比学习:权限管理(一)

    http://blog.csdn.net/weiwenhp/article/details/8093661 我们发现我们现在的生活中到处是涉及到密码,你要记各种各样的密码.比如银行卡,邮件,QQ,微博 ...

  9. SQL Server与Oracle对比学习:表的管理和组织

    http://blog.csdn.net/weiwenhp/article/details/8088979 我们知道数据库,顾名思义.最重要的东东就是管理数据,而数据在系统中主要是保存在表(table ...

随机推荐

  1. 黑客攻防技术宝典Web实战篇(二)工具篇

    扫描工具.中间攻击工具.加密解密工具等. 1 TM Thread Module 2 burpsuite 代理.中间攻击.repeatur.spider.暴力破解(intrude).加密.解密.扫描器 ...

  2. 你可能不知道的Google Chrome命令行参数

    概述:              关于Google Chrome命令行参数(英文叫Google Chrome Command line switches),是Chrome为了实现实验性功能.方便调试. ...

  3. HTML Table导出为Excel的方法

    HTML Table导出为Excel的方法: 直接上源码 <html> <head> <meta http-equiv="Content-Type" ...

  4. 终端改变host的类型,还原

  5. Max Degree of Parallelism最大并行度配置

    由于公司的业务在急速增长中,发现数据库服务器已经基本撑不住这么多并发.一方面,要求开发人员调整并发架构,利用缓存减少查询.一方面从数据库方面改善并发.数据库的并行度可设置如下: 1)cost thre ...

  6. OC第五节 ——点语法和@property

    一.setter和getter函数     1.回忆:如何访问对象中的成员变量    2.setter和getter函数的作用            setter  方法:   修改对象的字段/实例变 ...

  7. java依赖注入

    接口的作用 1.在spide中创建一个私有接口 private Downloadable downlaodable 覆盖set get 方法 创建一个方法  Public Page down load ...

  8. maven工程通过命令打包

    dos下cd到pom.xml所在的目录,输入maven命令:mvn clean package,回车即可. 会打成一个.war包在target文件夹下.

  9. 深入理解Java虚拟机之读书笔记三 内存分配策略

    一般的内存分配是指堆上的分配,但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配.对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况下直接分 ...

  10. css代码优化

    一.CSS代码优化作用与意义 1.减少占用网页字节.在同等条件下缩短浏览器下载css代码时间,相当于加快网页打开速度2.便于维护.简化和标准化css代码让css代码减少,便于日后维护3.让自己写的cs ...