求1条SQL语句~

whlusha720 2009-02-23 02:32:40
一对多级联删除

打比方2张表:
class表(班级表)
cid 主键
cname 班级名字
cstate 班级状态(正常、毕业.....)

student表(学生表)
sid 主键
sname 学生姓名

一个cid 对应多个学生

现在想求一条SQL语句 如果cstate状态为 finish(毕业)
就先删除班级的所有学生 再在class表删除这个班级
...全文
42 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
whlusha720 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dawugui 的回复:]
引用 5 楼 whlusha720 的回复:
引用 3 楼 lgxyz 的回复:
SQL codeDELETE A FROM STUDENT A, CLASS B WHERE A.CLASS=B.CID AND B.CSTATE='毕业'

DELETE CLASS WHERE CSTATE='毕业'


谢谢LS的各位朋友帮助
3楼朋友的方法最简单 呵呵
结贴给分了

那是我理解错?如果该版存在没有毕业的怎么办?
[/Quote]

不是你理解错了 而是我的问题没有那么复杂
student表里的字段也没有那么多 呵呵
还是谢谢你
dawugui 2009-02-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 whlusha720 的回复:]
引用 3 楼 lgxyz 的回复:
SQL codeDELETE A FROM STUDENT A, CLASS B WHERE A.CLASS=B.CID AND B.CSTATE='毕业'

DELETE CLASS WHERE CSTATE='毕业'


谢谢LS的各位朋友帮助
3楼朋友的方法最简单 呵呵
结贴给分了
[/Quote]
那是我理解错?如果该版存在没有毕业的怎么办?
whlusha720 2009-02-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lgxyz 的回复:]
SQL codeDELETE A FROM STUDENT A, CLASS B WHERE A.CLASS=B.CID AND B.CSTATE='毕业'

DELETE CLASS WHERE CSTATE='毕业'
[/Quote]

谢谢LS的各位朋友帮助
3楼朋友的方法最简单 呵呵
结贴给分了
dawugui 2009-02-23
  • 打赏
  • 举报
回复

declare @class as int

select @class = n.class from class m , student n where m.cid = n.class and m.cstate <> '毕业'

delete from student where sid = @class
delete from class where cid = @class
lgxyz 2009-02-23
  • 打赏
  • 举报
回复
DELETE A FROM STUDENT A, CLASS B WHERE A.CLASS=B.CID AND B.CSTATE='毕业'

DELETE CLASS WHERE CSTATE='毕业'
liu_ying_shan 2009-02-23
  • 打赏
  • 举报
回复
delete from student a
where exists(select class from class where cstate='finish' and class=a.class)

delete from student
where cstate='finish'
whlusha720 2009-02-23
  • 打赏
  • 举报
回复
student表少了一个字段
class 所在班级

--------------------华丽的分割线---------------------------
class表(班级表)
cid 主键
cname 班级名字
cstate 班级状态(正常、毕业.....)

student表(学生表)
sid 主键
sname 学生姓名
class 所在班级

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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