一道SQL:至少选修了学生002选修的全部课程的学生编号

此博客介绍了如何通过SQL查询筛选出至少选修了学生002所选全部课程的学生编号,并计算这些学生的选课数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

INSERT test_c SELECT '001', '001'
UNION ALL SELECT '001', '002'
UNION ALL SELECT '001', '003'
UNION ALL SELECT '002', '001'
UNION ALL SELECT '002', '002' 
UNION ALL SELECT '003', '003'
UNION ALL SELECT '003', '001'
UNION ALL SELECT '004', '005'
UNION ALL SELECT '004', '002'
UNION ALL SELECT '005', '002'
UNION ALL SELECT '005', '001'


Sid 表示学生编号
Cid 表示课程编号


至少选修了学生002选修的全部课程的学生编号






        select d.sid from
            (
                 select sid,count(cid) as cidnnum  
                                    from (
                                         select a.sid,a.cid
                                         from [LogBase].[dbo].[test_c] a,[LogBase].[dbo].[test_c] b 
                                         where a.cid=b.cid and b.sid=002
                                    )as c    
                                    group by sid
              )d ,
              (
              select COUNT(cid) as e from [LogBase].[dbo].[test_c] where sid=002
              ) f

              where d.cidnnum = f.e



   select sid as cidnnum  
                                    from (
                                         select a.sid,a.cid
                                         from [LogBase].[dbo].[test_c] a,[LogBase].[dbo].[test_c] b 
                                         where a.cid=b.cid and b.sid=002
                                    )as c    
                                    group by sid

                                   having count(cid) =(select COUNT(cid) as e from [LogBase].[dbo].[test_c] where sid=002)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值