T-SQL去除重复行

例子:

CREATE TABLE [dbo].[testDT](
	[bh] [varchar](50) NULL,
	[name] [varchar](50) NULL,
	[gender] [int] NULL,
	[email] [varchar](50) NULL
) 
测试数据:12 li 1 [email protected]
12 li 1 [email protected]
15 wang 0 [email protected]
13 zhang 1 [email protected]
13 zhang 1 [email protected] 

思路:

1. distinct筛选出来, 使用temp表来回倒。

2. 使用row_number() partition by 方法。如果重复行row_number会出现多个,例如1,2,3,删除row_number>1的行。

--sql 2005
select bh , name , sex , email from
(
  select t.* , row_number() over(partition by bh order by name , sex , email) px from testdt t
) m
where px = 1

3. group by 方法,其实相当于partition by的方法。

ref:https://bbs.csdn.net/topics/380198980?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

原文地址:https://www.cnblogs.com/watermarks/p/12573252.html

时间: 2024-10-09 10:35:44

T-SQL去除重复行的相关文章

SQL语句技巧之去除重复行

去除表中重复行数据,可能大家立马就想到的是用DISINTCT关键字,但DISINTCT只能是去除表中所有列都相同的行,若碰到需要去除表中多个字段重复的行(即:部份相同,部份不相同),那么该如何做呢?我通过多年数据库编写经验,整理了如下方法,供大家参考和使用. 方法1:适用于返回较少字段 select F1,F2,F3,MAX(F4) FROM TABLENAME GROUP BY F1,F2,F3 方法2:适用于返回行所有字段,需指定不相同的字段 select * FROM TABLENAME

sql去除重复语句

转自芙蓉清秀的BLOG http://blog.sina.com.cn/liurongxiu1211 sql去除重复语句 (2012-06-15 15:00:01) sql 单表/多表查询去除重复记录 单表distinct 多表group by group by 必须放在 order by 和 limit之前,不然会报错 ************************************************************************************ 1.查

sql 删除重复行

1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where peopleId in (selec

DataTable去除重复行

//抽取dt中的特定列"Region","Cur","Year"组合成新的dat DataTable dat = dt.DefaultView.ToTable(false, new string[]{ "Region","Cur","Year" }); DataView dv = new DataView(w_dt); //虚拟视图吧,我这么认为 //去除dv中的重复行并组合成新的dt2

实例详细说明linux下去除重复行命令uniq

地址:http://blog.51yip.com/shell/1022.html 一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行.如果您想先对输入排序,使用sort -u. 2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中

sublime 去除重复行或者只保留唯一值

去除重复行或者只保留唯一值,分别对应两件事情. 去除重复行,指的是,将text 文档中所有有重复行的行不做保留,全都删除. 只保留唯一值,指的是,将text 文档中有重复行的保留且仅保留一个值,最后就实现整个text中每一行均为唯一值. 这两种方法都是基于正则表达式替换的方法,查找的模式是一样的(利用了正则表达式capture group的方法),区别在于替换目标的内容不同. sublime 去除重复行 首先,点击菜单栏edit -- sort进行排序. 查找内容为: ^(.+)$[\r\n](

SQL查询语句去除重复行

1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录(有主键id即唯一键) 如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组 select * from table where id in (select min(id) from table group by [去除重复的字段名列表,....])

ROW_NUMBER() OVER函数的基本用法,也可用于去除重复行

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号. 示例: xlh           row_num 1700              1 1500              2 1085             

[Linux]去除重复行

文本处理时,经常要删除重复行,下面是三种方法 第一,用sort+uniq,注意,单纯uniq是不行的. sort -n test.txt | uniq 第二,用sort+awk命令,注意,单纯awk同样不行,原因同上. [[email protected] ~]$ uniq --help 用法:uniq [选项]... [文件] 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出. 不附加任何选项时匹配行将在首次出现处被合并. 长选项必须使用的参数对于短选项时也是必需使用的. -