Student Table
Id Name Age SectionId
1 Ray 12 1
2 May 11 2
3 Fae 12 3
4 Jay 11 4
5 Zoe 12 5
Section Table
Id SectionName Priority
1 A 1
2 B 2
3 A 1
4 B 2
5 A 1
我有上面的两个sql表。我的代码失败,因为为每个具有相同年龄的学生创建了重复的科记录。预期结果应为:
1.仅应创建2个部分记录(A和B部分)
2. Ray,Fae和Zoe的SectionId应该为1。
3. May和Jay的SectionId应该为2。
我很难创建一个脚本来更正数据库中的现有记录。您能帮我还是指出正确的方向来创建一个脚本,该脚本将:
1.删除重复的科目记录(编号3、4、5)
2.并更新学生的SectionId的值
非常感谢所有帮助,谢谢……
编辑:
SELECT SectionName, Priority, COUNT(*)
FROM Section
GROUP BY SectionName, Priority
HAVING COUNT(*) > 1
当前我只能找到重复的记录
答案 0 :(得分:1)
您首先需要update
错误的部分ID,然后进行delete
查询以删除不需要的部分,如下所示。
update s
set s.SectionId =(select min(s1.id) from section s1
inner join section s2 on s1.sectionname=s2.sectionname
where s2.id=s.sectionid)
from student s
其次是删除
delete from section where id> 2
注意:要进行删除,如果还有其他有效记录,则可能需要附加诸如and SectionName in ('a','b')
之类的条件。