数据库学习笔记3 基本的查询流 2 select lastname+','+firstname as fullname order by lastname+','+firstname len() left() stuff() percent , select top(3) with ties

时间:2022-03-30 23:46:45

数据库学习笔记3 基本的查询流 2

 

order by子句对查询结果集进行排序

  • 多列和拼接

多列的方式就很简单了

select firstname,lastname
from person.person
order by lastname,firstname;

这句话表示根据lastnamefirstname两列进行排序,并且是先按照lastname进行排序如果有相同的值就按照firstname进行排序。

拼接很有意思,可以写成这个样子

select
lastname+','+firstname as fullname
from person.person
order by lastname+','+firstname;

这是把表达式放在了order by子句中了,当然也可以把order by子句中的表达式换成select子句中的别名fullname

数据库学习笔记3 基本的查询流 2   select  lastname+','+firstname as fullname    order by lastname+','+firstname    len()   left()  stuff()  percent  , select top(3) with ties

另外还有一种写法是把列的位置写在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就把它截掉。

数据库学习笔记3 基本的查询流 2   select  lastname+','+firstname as fullname    order by lastname+','+firstname    len()   left()  stuff()  percent  , select top(3) with ties

数据库学习笔记3 基本的查询流 2   select  lastname+','+firstname as fullname    order by lastname+','+firstname    len()   left()  stuff()  percent  , select top(3) with ties

top谓词

我印象中top的作用很小,也就是查询某一个表里的前几条数据,但是这次知道了还有percentwith 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 基本的查询流 2   select  lastname+','+firstname as fullname    order by lastname+','+firstname    len()   left()  stuff()  percent  , select top(3) with ties
 

这样的写法表示,如果最后一条有满足条件的数据也包含在查询结果里,所以最终查出来的结果并不一定是3条数据。