对结果集的排序以及谓词的使用(distinct、top)
一、对结果集的排序
在SQL表中的数据是无序的,主键的作用唯一标识记录行。而不是对表进行排序。
若Select语句中没有使用Order by语句将按主键排列表中的数据。
注:如果要对记录行进行排序,最好使用Order by子句指定顺序。
SQL可以根据多个列进行排序,且用于排序的列不必是Select语句返回的列。
1、使用列名指定顺序
如:
select * from yuangong order by birthday,truename
2、使用表达式指定顺序
Select lastname+’,’+firstname from customer order by
lastname+’,’+firstname asc
3、使用列别名指定顺序
Select lastname+’,’+firstname as FullName from customer order by
FullName asc
注:可以在Order By子句中使用别名,但在Where子句中不能,因为从逻辑上说
,Where子句是在查询刚开始时执行的,而Order By子句是最后执行的逻辑运算,
此时结果列及其别名都已经创建了。
4、使用列序号指定顺序
如:Select firstname,lastname from customer order by 2
5、Order By 与排序规则
服务器的排序规则设置是在安装时确定的,但安装后也可以使用Collate关键字来设置
数据库或列的排序规则属性。
二、谓词的使用
Distinct ,Top
1、Select Distinct
消除结果集中的重复记录行。对应的是all (默认)
注:是否重复基于输出列而不是底层数据表确定的。
如:
Select distinct name,sex from student
2、排名Top
语法: top n | top n percent [with ties]
一般搭配Order by 使用
对于top 来说,with ties 使得具有相同排名的行也会显示出来,如
top 3 显示排名前3的3行
top 3 with ties 显示排名前3的行,但如果一个名次有多个行,则可显示多行。