对于重复行,如何只保留重复行中的一行?例如....

my_yinger 2013-05-05 01:18:27
对于重复行,如何只保留重复行中的一行?例如....

有数据表wzbm有w_name,bm,dw三列,已知w_name有重复的行

想用SELECT distinct w_name,bm,dw FROM wzbm 排除重复行后导入新的表中,用这样的方法来清除重复行中多余的,但不行,用 distinct w_name 可以,但后面再加别的列就不行了。


如何能做到对于w_name有重复的行,只保留一行?
或者筛选出来都是唯一的行后,再导入新表也行
...全文
734 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
my_yinger 2013-05-09
  • 打赏
  • 举报
回复
引用 5 楼 ZaoLianBuXiQi 的回复:
[quote=引用 4 楼 my_yinger 的回复:] 我发现这样好像就行,不知对不对 SELECT w_name,bm,dw FROM wzbm group by w_name,bm,dw
这跟你上面说的意思不同,这个是求w_name,bm,dw这3列都有重复的行,则只要显示一个 而非 有数据表wzbm有w_name,bm,dw三列,已知w_name有重复的行,但并不表示bm,dw这两列也有相同的值 [/quote] 明白了
software_artisan 2013-05-09
  • 打赏
  • 举报
回复
delete table where id not in(select w_name, max(ID) from table group by w_name)
ljf96345 2013-05-08
  • 打赏
  • 举报
回复
Use tempdb GO Create table dbo.wzbm (w_name varchar(10),bm int,dw int ) Go Insert Into dbo.wzbm values('a',1,2),('a',2,3),('b',2,3) Go with tb as ( Select *,ROW_NUMBER() Over (Order by w_name) as rn From dbo.wzbm ) Select w_name,bm,dw From tb where rn in ( Select max(rn) From tb group by w_name ) --对 w_name 进行分组,查询出w_name对应的集合中 rn 列最大的行
duqiu155 2013-05-08
  • 打赏
  • 举报
回复
看上去有点复杂
MrYangkang 2013-05-08
  • 打赏
  • 举报
回复
引用 4 楼 my_yinger 的回复:
我发现这样好像就行,不知对不对 SELECT w_name,bm,dw FROM wzbm group by w_name,bm,dw
这跟你上面说的意思不同,这个是求w_name,bm,dw这3列都有重复的行,则只要显示一个 而非 有数据表wzbm有w_name,bm,dw三列,已知w_name有重复的行,但并不表示bm,dw这两列也有相同的值
my_yinger 2013-05-08
  • 打赏
  • 举报
回复
我发现这样好像就行,不知对不对 SELECT w_name,bm,dw FROM wzbm group by w_name,bm,dw
中关村网名 2013-05-05
  • 打赏
  • 举报
回复
Use tempdb
GO
Create table dbo.wzbm
(w_name varchar(10),bm int,dw int )
Go
Insert Into dbo.wzbm values('a',1,2),('a',2,3),('b',2,3)
Go
	
with tb as 
(
	Select *,ROW_NUMBER() Over (Order by w_name) as rn
	From dbo.wzbm
)
Select t1.w_name,t1.bm,t1.dw
From tb as t1
Where not exists 
	(Select * 
	From tb as t2
	where t2.rn > t1.rn And t1.w_name = t2.w_name
	)
你看这样行不,通过给表添加行号。
ACMAIN_CHM 2013-05-05
  • 打赏
  • 举报
回复
参考下贴中的多种方法 http://blog.csdn.net/acmain_chm/article/details/4126306 [征集]分组取最大N条记录方法征集,及散分....
AcHerat 元老 2013-05-05
  • 打赏
  • 举报
回复

select *
from wzbm t
where not exists (select 1 from wzbm where w_name = t.w_name and bm > t.bm)

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧