删除重复数据问题 解决立马结帖

happy664618843 2014-11-24 12:08:37
select * from tbl_journal A inner join
(select Period, LegalEntity,ino_id,BUZEI from tbl_Journal where period>'201405'
group by Period,LegalEntity,ino_id,BUZEI having COUNT(*)>1 ) B
ON A.Period=b.Period and a.LegalEntity=b.LegalEntity and a.ino_id =b.ino_id and a.BUZEI=b.BUZEI
order by a.Period, a.LegalEntity, a.ino_id, a.BUZEI


以上这个SQL可以查询多条重复数据。

请问咱根据Period, LegalEntity, ino_id, BUZEI 这四个主键, 删除重复列?, 只保留一条数据。

求大神们解答
...全文
84 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
还在加载中灬 2014-11-24
  • 打赏
  • 举报
回复
慢了~~
还在加载中灬 2014-11-24
  • 打赏
  • 举报
回复
如果数据比较多,总要知道留哪一条吧 现假设留主键最小的那一条
DELETE T
FROM(
	SELECT *
		,ROW_NUMBER()OVER(PARTITION BY Period,LegalEntity,ino_id,BUZEI ORDER BY 主键)RN
	FROM tbl_journal
)T WHERE RN>1
主键换成你的主键
happy664618843 2014-11-24
  • 打赏
  • 举报
回复
引用 3 楼 roy_88 的回复:
SQL2005以上版本,可用以上通用方法
非常不错 挺好的, 3Q
中国风 2014-11-24
  • 打赏
  • 举报
回复
SQL2005以上版本,可用以上通用方法
happy664618843 2014-11-24
  • 打赏
  • 举报
回复
中国风 2014-11-24
  • 打赏
  • 举报
回复
DELETE t
FROM 
(SELECT *,ROW_NUMBER() OVER(PARTITION BY Period
                           ,LegalEntity
                           ,ino_id
                           ,BUZEI ORDER BY Period) AS Row FROM tbl_journal 
) AS t
WHERE Row>1

34,590

社区成员

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

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