在SELECT语句中,对查询结果进行排序的子句是什么?能消除重复行的关键字是什么?
对查询结果进行排序的子句 having子句,消除重复行的关键字是distinct。
1、having 语法:
SELECT [ ALL | DISTINCT ]{ * | projectItem [, projectItem ]* } FROM tableExpression
[ WHERE booleanExpression ] [ GROUP BY { groupItem [, groupItem ]* } ]
[ HAVING booleanExpression ];
示例:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer
HAVING SUM(OrderPrice)<2000
上面语句的意思是从结果中筛选出了总体价格小于2000的商品。
2、distinct 语法:
SELECT DISTINCT 列名称 FROM 表名称
示例:SELECT DISTINCT Company FROM Orders
上面语句的意思是对订单表中的公司进行去重查询。
扩展资料
SELECT语句返回用指定的条件在一个数据库中查询的结果,返回的结果被看作记录的集合。
语法:
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2]
[, ...]]} FROM tableexpression [, ...] [IN externaldatabase] [WHERE... ] [GROUP BY... ]
[HAVING... ] [ORDER BY... ] [WITH OWNERACCESS OPTION]
解释说明:predicate可选参数,该参数可取值为ALL(缺省值)、DISTINCT、DISTINCTROW 或TOP。如果该参数为ALL,则返回SQL语句中符合条件的全部记录。
如果为DISTINCT,则省略选择字段中包含重复数据的记录;如果为DISTINCTROW,则省略基于整个重复记录的数据,而不只是基于重复字段的数据。
如果为TOP n(n为一个整数),则返回特定数目的记录,且这些记录将落在由 ORDER BY 子句指定的前面或后面的范围中。
参考资料链接:百度百科-SQL数据库
参考资料链接:百度百科-select语句
1、首先打开SQL Server Management管理工具,运用Select语句查询出要排序的数据,如下图所示。
2、接下来我们直接运用Order By对数据中的ContactName字段进行排序,如下图所示,默认是升序。
3、如果想按照降序的话,则需要在排序字段后面加上desc属性,如下图所示。
4、接下来你也可以在order by后面加上两个或者多个字段,如下图所示,SQL Server会按照他们的顺序组合进行排序。
5、如果想对ContactName进行升序,对CustomerID进行降序,则可以安装如下图所示的方式书写。
6、如果想对两个排序字段都按降序进行排序,则需要在每个字段后面都加desc属性,如下图所示。
在SELECT语句中,对查询结果进行排序的子句是having子句。进行排序的子句是orderby,消除重复行的关键字是DISTINCT子句。
Having和Where作用是相近的,只不是一个用于普通字段的限定,而Having是用于对聚合后结果的限定。例:
select pname,count(*) as cnt from ar where count(*) >1 group by pname 是错误的,正确的应该是select pname,count(*) as cnt from ar group by pname having count(*) >1
HAVING 子句与 WHERE 子句类似,但只应用于作为一个整体的组(即应用于在结果集中表示组的行),而 WHERE 子句应用于个别的行。查询可同时包含 WHERE 子句和 HAVING 子句。
扩展资料
group By和order by having用法和区别:
GROUP BY(分组):必须配合聚合函数一起使用,使用时至少需要一个分组标志字段。
重点:使用GROUP BY的查询语句的时候,选择后面的所有列中,没有使用聚合函数的列,必须出现在GROUP BY 后面:
SELECT 部门,COUNT(id)FROM学生组BY 部门
例如:这条sql,如果部门没有跟在由后面这句语法是错误的。
聚合函数:
-COUNT:统计行数量:
SELECT部门,COUNT(id)FROM学生组BY部门。
OEDER BY:就是行的排序方式,默认的为升序。后面必须列出排序的字段名,可以是多个字段名。
distinct 是取消重复#这里是查询所有的,但是条件满足的重复的不显示出来
select distinct 一个列 from 表名 where 条件 ;
select distinct 一个列 from 表名 ; #这里会导致所有重复的“一个列”数据只出现一次
#如果“一个列”是好几个列,那么好几个列都一样的才消除剩下一行
注意:erbisi3是一个表名
select * from erbisi3 order by num asc ; # 排序。升序
select * from erbisi3 order by num desc ; # 排序,降序
select * from erbisi3 order by num asc , xxx desc ;#先num升,之后相同的xxx降
# SELECT * FROM 表
# ORDER BY 字段 DESC[ASC]
# 注意:字段最好是INT型
# DESC 降 ASC 升
希望对你学习有用……