Student表如下:(主键 为 sno 并且建立了唯一的聚集索引sno)
sno sname ssex address0123 李欢 男 江西省 ,南昌市
1001 张三 男 广东省,潮州市
1002 李四 男 浙江省,义乌市
1003 小红 女 江西省 ,南昌市
1004 李二 男 广东省,潮州市Course表如下:(主键 为 cno 并且建立了唯一的聚集索引cno)
cno cnamec01 数学
c02 英语
c03 计算机基础
c04 JAVA数据库系统 SC表如下:(建立的外键有sno,cno)
sno cno grade1001 c01 100
1001 c02 100
1001 c03 85
1001 c04 78
1002 c01 100
1002 c02 93
1002 c03 90
1002 c04 100
1003 c01 100
1003 c02 100
1003 c03 100
1003 c04 100
1004 c01 100
1004 c02 100
1004 c03 80
1004 c04 100
我要得出这样的表.如何用SQL命令删除重复的记录,以及如何避免重复记录的插入呢??望名位大侠帮帮忙吧!我用的数据库是SQL Server 2005,在网上也找了不少资料,只解决了删除完全重复的记录,还有一个不完全重复的记录,不知道怎么删??以及避免重复记录的插入。。我实在没办法了,恳请各位大侠帮帮忙
sno sname ssex address0123 李欢 男 江西省 ,南昌市
1001 张三 男 广东省,潮州市
1002 李四 男 浙江省,义乌市
1003 小红 女 江西省 ,南昌市
1004 李二 男 广东省,潮州市Course表如下:(主键 为 cno 并且建立了唯一的聚集索引cno)
cno cnamec01 数学
c02 英语
c03 计算机基础
c04 JAVA数据库系统 SC表如下:(建立的外键有sno,cno)
sno cno grade1001 c01 100
1001 c02 100
1001 c03 85
1001 c04 78
1002 c01 100
1002 c02 93
1002 c03 90
1002 c04 100
1003 c01 100
1003 c02 100
1003 c03 100
1003 c04 100
1004 c01 100
1004 c02 100
1004 c03 80
1004 c04 100
我要得出这样的表.如何用SQL命令删除重复的记录,以及如何避免重复记录的插入呢??望名位大侠帮帮忙吧!我用的数据库是SQL Server 2005,在网上也找了不少资料,只解决了删除完全重复的记录,还有一个不完全重复的记录,不知道怎么删??以及避免重复记录的插入。。我实在没办法了,恳请各位大侠帮帮忙
sno cno grade1001 c01 100
1001 c01 90
1001 c02 100
1001 c03 85
1001 c04 78
1002 c01 100
1002 c01 85
1002 c02 93
1002 c03 90
1002 c04 100
1003 c01 100
1003 c02 100
1003 c03 100
1003 c04 100
1004 c01 100
1004 c02 100
1004 c03 80
1004 c04 100删除完后得到
sno cno grade1001 c01 100
1001 c02 100
1001 c03 85
1001 c04 78
1002 c01 100
1002 c02 93
1002 c03 90
1002 c04 100
1003 c01 100
1003 c02 100
1003 c03 100
1003 c04 100
1004 c01 100
1004 c02 100
1004 c03 80
1004 c04 100
避免重复记录插入只要设置好主键就可以避免了
from SC a where exists(select 1 from SC where sno=a.sno and cno=a.cno and grade>a.grade)
避免重复记录插入只要设置好主键就可以避免了-->>不完全重复的,你删除总得有个条件吧。
上面已经贴了原来的表和删除后的表,看看那表的变化,就知道我的删除条件了避免重复记录插入只要设置好主键就可以避免了要是我设置了主键就没法得到这样的结果了
sno cno grade1001 c01 100
1001 c02 100
1001 c03 85
1001 c04 78
1002 c01 100
1002 c02 93
1002 c03 90
1002 c04 100
1003 c01 100
1003 c02 100
1003 c03 100
1003 c04 100
1004 c01 100
1004 c02 100
1004 c03 80
1004 c04 100
因为那的学号1001 都有重复的,主键不能重复,那学生就只能选择一门学科了,但是呢,学生是可以选择多门学科的,就像我上面的表一样
--sno cno gradeselect distinct *
into #tb
from tbdelete from tbinsert into tb
select * from #tbdrop table #tbdelete t
from tb t
where exists (select 1 from tb where sno=t.sno and cno=t.cno and grade>t.grade)
1001 c01 100
1001 c02 100
1001 c03 85
1001 c04 78
1002 c01 100
1002 c02 93
1002 c03 90
1002 c04 100
1003 c01 100
1003 c02 100
1003 c03 100
1003 c04 100
1004 c01 100
1004 c02 100
1004 c03 80
1004 c04 100