SQL去除重复的问题............

chinajiajin 2010-11-23 11:33:22
表格式如下:

ID S_ID COURSE_NAME STATE
1 1900560013 课程A 0
2 1900560013 课程A 1
3 1900930116 课程A 0
4 1900930116 课程A 1
5 1900930116 课程B 1
6 1900930116 课程C 0
7 1900930116 课程B 0
8 1900930116 课程C 1


现在 S_ID,COURSE_NAME 两个字段有重复,需要删除重复,但是两条重复的数据需检查STATE,需要删除的是STATE=1的,如果两天重复的数据STATE都等于1,则任意删除一条。
...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
leejelen 2010-11-23
  • 打赏
  • 举报
回复
用程序来删除好了。哈哈,把数据读出来判断!
打一壶酱油 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chen_ya_ping 的回复:]
SQL code

create table #t
(
ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
S_ID VARCHAR(50) NOT NULL,
COURSE_NAME VARCHAR(20) NOT NULL,
STATE BIT NOT NULL
)
insert into #t
values
('1900560013',……
[/Quote]

分析了一下,6楼的是对的
flyerwing 2010-11-23
  • 打赏
  • 举报
回复
distinct不行吗?
chen_ya_ping 2010-11-23
  • 打赏
  • 举报
回复

create table #t
(
ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
S_ID VARCHAR(50) NOT NULL,
COURSE_NAME VARCHAR(20) NOT NULL,
STATE BIT NOT NULL
)
insert into #t
values
('1900560013','A',0),
('1900560013','A',1),
('1900930116','A',1),
('1900930116','A',1),
('1900930116','A',1),
('1900930116','B',1),
('1900930116','C',0),
('1900930116','B',0),
('1900930116','C',1)

--先删除S_ID,COURSE_NAME,[STATE] 完全一样的数据,只剩下一条
--上面的insert语句中3,4,5 S_ID,COURSE_NAME,[STATE]都一样,所以就剩下了3
delete from #t
where ID not in
(
select min(id)
from #t
group by S_ID,COURSE_NAME,[STATE]
)

select * from #t

--这个地方就按照你的要求删除S_ID,COURSE_NAME一样,但[STATE]=1的数据
delete from #t
where ID in
(
select t.ID from #t t
inner join
(
select S_ID,COURSE_NAME from #t
group by S_ID,COURSE_NAME
having COUNT(*)>1
) as tt on t.s_id=tt.s_id and t.course_name=tt.course_name
where t.state=1
)

select * from #t

drop table #t

hch126163 2010-11-23
  • 打赏
  • 举报
回复
select max(ID), S_ID ,COURSE_NAME ,max(STATE) from table group by S_ID ,COURSE_NAME
ahpanghupang 2010-11-23
  • 打赏
  • 举报
回复
楼上的 我觉得你没看清楚楼主的条件
现在 S_ID,COURSE_NAME 两个字段有重复,需要删除重复,但是两条重复的数据需检查STATE,需要删除的是STATE=1的,如果两天重复的数据STATE都等于1,则任意删除一条。

你这里分组的条件 貌似少啦个 coursename
liyuchun00 2010-11-23
  • 打赏
  • 举报
回复
delete from a where id in(

select max(id) as id
from a
where state=1
group by s_id)


看下
打一壶酱油 2010-11-23
  • 打赏
  • 举报
回复
懒得动脑了,sql 确实可以比较方便地实现

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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