SQL Server中怎样可以从SELECT语句的结果集中删除重复行

 我来答
lbl_pua
推荐于2019-10-05 · TA获得超过4732个赞
知道答主
回答量:30
采纳率:0%
帮助的人:3663
展开全部

在要删除的有重复数据中存在几种情况:

1.存在两条完全相同的纪录

这是最简单的一种情况,用关键字distinct就可以去掉。

example: select distinct * from table(表名) where (条件)

2.存在部分字段相同的纪录(有主键id即唯一键)

如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组

example:

select * from table where id in (select max(id) from table group by [去除重复的字段名列表,....])

3.没有唯一键ID

example:

select identity(int1,1) as id,* into newtable(临时表) from table

select * from newtable where id in (select max(id) from newtable group by [去除重复的字段名列表,....])

扩展资料:

SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。

Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。

参考资料:百度百科-Microsoft SQL Server管理系统

habcb
推荐于2017-10-12 · TA获得超过268个赞
知道小有建树答主
回答量:627
采纳率:0%
帮助的人:239万
展开全部
使用 DISTINCT 消除重复项
DISTINCT 关键字可从 SELECT 语句的结果中除去重复的行。如果没有指定 DISTINCT,那么将返回所有行,包括重复的行。例如,如果在 titleauthor 中选择所有作者 ID 时未使用 DISTINCT,那么将会返回下列行(其中包括一些重复的行):

USE pubs
SELECT au_id
FROM titleauthor
下面是结果集:

au_id
-----------
172-32-1176
213-46-8915
213-46-8915
238-95-7766
267-41-2394
267-41-2394
274-80-9391
409-56-7008
427-17-2319
472-27-2349
486-29-1786
486-29-1786
648-92-1872
672-71-3249
712-45-1867
722-51-5454
724-80-9391
724-80-9391
756-30-7391
807-91-6654
846-92-7186
899-46-2035
899-46-2035
998-72-3567
998-72-3567

(25 row(s) affected)

而使用了 DISTINCT 后,就能够除去重复项,而只查看唯一的作者 ID:

USE pubs
SELECT DISTINCT au_id
FROM titleauthor

下面是结果集:

au_id
-----------
172-32-1176
213-46-8915
238-95-7766
267-41-2394
274-80-9391
409-56-7008
427-17-2319
472-27-2349
486-29-1786
648-92-1872
672-71-3249
712-45-1867
722-51-5454
724-80-9391
756-30-7391
807-91-6654
846-92-7186
899-46-2035
998-72-3567

(19 row(s) affected)

重要 涉及 DISTINCT 的语句的输出取决于列的排序规则或应用 DISTINCT 的表达式。有关不同排序规则的效果的更多信息,请参见 SQL Server 排序规则基础知识。

对于 DISTINCT 关键字来说,各空值将被认为是相互重复的内容。当 SELECT 语句中包括 DISTINCT 时,不论遇到多少个空值,在结果中只返回一个 NULL。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SQL的艺术
推荐于2017-10-15 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3323

向TA提问 私信TA
展开全部

结果集中去除重复行可以使用函数【distinct】也可以使用分组语句【group by】

1、【distinct】使用示例:

select distinct userid,username from 表名

2、分组语句【group by】使用示例:

select userid,username from 表名 group by userid,username


1和2两个语句的select检索输出结果是一致的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KarasCanvas
2010-07-10 · TA获得超过2865个赞
知道大有可为答主
回答量:3619
采纳率:0%
帮助的人:3246万
展开全部
使用 distinct 或者 group by
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
术士2010
2010-07-10 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:90.8万
展开全部
给你一个网址好了,呵呵,可以学会更多东西,我也懒得敲了。

参考资料: http://www.360doc.com/content/10/0408/13/536925_22087659.shtml

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式