数据库学习笔记3 基本的查询流 2
order by子句对查询结果集进行排序
- 多列和拼接
多列的方式就很简单了
select firstname,lastname from person.person order by lastname,firstname;
这句话表示根据lastname和firstname两列进行排序,并且是先按照lastname进行排序如果有相同的值就按照firstname进行排序。
拼接很有意思,可以写成这个样子
select lastname+','+firstname as fullname from person.person order by lastname+','+firstname;
这是把表达式放在了order by子句中了,当然也可以把order by子句中的表达式换成select子句中的别名fullname
另外还有一种写法是把列的位置写在order by子句中,还不是很了解这样写法的目的,之后应该有更加详细的讲解。
- 可以使用case
select description,len(description) as textlength from production.productdescription where description like 'replacement%' order by case when left(Description,5)='This ' then stuff(description,1,5,'') else description end;
这句话的意思是根据description排序,case的作用是如果description值得第一个单词是This就把它截掉。
top谓词
我印象中top的作用很小,也就是查询某一个表里的前几条数据,但是这次知道了还有percent和with ties的存在
- percent
遇到求百分比结果集的时候可以把top和percent连用
select top(3) percent ... from ....
这样的写法是表示查询前百分之30的数据。
- with ties
应对查询成绩前三名的同学如果简单的使用 select top(3) ... from 这样的句式其实是有问题的,如果满足条件的数据不只三条,比如说有好几个人并列第三。with ties就是来解决这个问题的。
select top(3) with ties ...from ...
这样的写法表示,如果最后一条有满足条件的数据也包含在查询结果里,所以最终查出来的结果并不一定是3条数据。
推荐阅读
-
数据库学习笔记3 基本的查询流 2
-
【基于C++和Python的Opencv3学习笔记之基本图形的绘制】
-
MySQL学习笔记3:表的基本操作介绍
-
MySQL学习笔记2:数据库的基本操作(创建删除查看)
-
MySql官方手册学习笔记2 MySql的模糊查询和正则表达式
-
FishC《零基础学习python》笔记--第007、008讲、009讲:了不起的分支和循环1、2、3
-
【汇编学习笔记】3:查询子串出现的位置
-
Hibernate学习笔记(2):Hibernate中子查询(subselect)的使用
-
【mysql基本使用学习笔记day01】【数据库简介】数据存储+数据库+RDBMS+RDBMS和数据库的关系+SQL+MySQL
-
Activiti工作流学习笔记之自动生成28张数据库表的底层原理解析