在SELECT语句中,对查询结果进行排序的子句是什么?能消除重复行的关键字是什么?

 我来答
床前明月儿
高能答主

2019-05-26 · 探索生活中的另一种可能
床前明月儿
采纳数:101 获赞数:171947

向TA提问 私信TA
展开全部

对查询结果进行排序的子句 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语句

百度网友faadf46
高粉答主

2020-04-29 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:73.9万
展开全部

1、首先打开SQL Server Management管理工具,运用Select语句查询出要排序的数据,如下图所示。

2、接下来我们直接运用Order By对数据中的ContactName字段进行排序,如下图所示,默认是升序。

3、如果想按照降序的话,则需要在排序字段后面加上desc属性,如下图所示。

4、接下来你也可以在order by后面加上两个或者多个字段,如下图所示,SQL Server会按照他们的顺序组合进行排序。

5、如果想对ContactName进行升序,对CustomerID进行降序,则可以安装如下图所示的方式书写。

6、如果想对两个排序字段都按降序进行排序,则需要在每个字段后面都加desc属性,如下图所示。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
娱乐小八卦啊a
高粉答主

2020-04-29 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117852

向TA提问 私信TA
展开全部

在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:就是行的排序方式,默认的为升序。后面必须列出排序的字段名,可以是多个字段名。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知道小爷
2017-07-07 · TA获得超过1489个赞
知道小有建树答主
回答量:368
采纳率:83%
帮助的人:23.4万
展开全部

在select语句中,对查询结果进行排序的字句是order by子句;消除重复行的关键字是distinct。

举例如下

工具:SqlServer 2008 R2

步骤:

1、test表中数据如下:

2、现要对表中数据按照age从小到大的顺序排列数据,可用如下语句:

select * from test order by age

3、查询结果:

4、如再在表中加一条数据,此时表中数据如下:

5、要消除重复的age,可用如下语句:

select distinct age from test

6、查询结果中重复行消除:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
517167323
2012-12-11 · TA获得超过278个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:71万
展开全部
一下是我自己的学习体会,如果有错误勿喷,相互学习:

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 升

希望对你学习有用……
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式