Query应该返回Rizwan Fayaz和Ahmed的名字。 SQL查询对参加英语或乌尔都语课程的学生,但两者都不是。 声明@Student Table(Sid int Indentity(1,1),name

问题描述 投票:0回答:5
declare @Student table(sid int identity(1, 1), sname varchar(250)) declare @Course table(cid int identity(1, 1), cname varchar(250)) declare @StudentCourse table(cid int, sid int) insert into @Student(sname) select 'Mehboob' union all --1 select 'Rahim' union all -- 2 select 'Naveed' union all --3 select 'Rizwan' union all --4 select 'Fayaz' union all --5 select 'Ahmed' -- 6 insert into @Course(cname) select 'English' union all select 'Urdu' insert into @StudentCourse(sid ,cid) select 1,1 union all select 2,1 union all select 3,1 union all select 4,1 union all select 5,2 union all select 6,2 union all select 1,2 union all select 2,2

我一直在练习,最后我通过这个查询做到了,你们在您的脑海中还有其他任何吗?

select s.*, count(1) as TotalEnrolledCourses from @Student s inner join @StudentCourse sc on s.sid = sc.sid where sc.cid in (1,2) group by s.sid, sname having TotalEnrolledCourses = 1
    
sql sql-server database
5个回答
2
投票
select sid, max(cid) from StudentCourse group by sid having count(*)=1

从这里您可以获取一个学生的完整信息,其中包括一门注册课程,即姓名和ID等。


1
投票


1
投票

SELECT s.sid, s.sname FROM @StudentCourse sc INNER JOIN @Student s ON s.sid = sc.sid WHERE sc.cid IN(1, 2) GROUP BY s.sid, s.sname HAVING ( SUM(CASE WHEN sc.cid = 1 THEN 1 ELSE 0 END) + SUM(CASE WHEN sc.cid = 2 THEN 1 ELSE 0 END) ) = 1



0
投票
enrollments

student_id
,以下SQL查询将检索参加“英语”或“ urdu”课程的学生,但两者都不是。
course_name

0
投票
拷贝

select

sql
解释:

第一部分:选择参加“英语”课程的学生,但在“乌尔都语”课程中
not

第二部分:选择参加“乌尔都语”课程的学生,但在“英语”课程中
not

  • student_id FROM enrollments WHERE course_name = 'English' AND student_id NOT IN (SELECT student_id FROM enrollments WHERE course_name = 'Urdu') UNION SELECT student_id FROM enrollments WHERE course_name = 'Urdu' AND student_id NOT IN (SELECT student_id FROM enrollments WHERE course_name = 'English');

    确保只列出了一次学生,即使他们符合两个条件。 对于那些有兴趣提高其语言技能的人,在伊斯兰堡搜索bbest的英语课程可能是增强流利性,说话信心和发音的绝佳选择。无论您是初学者还是想完善自己的技能,选择专注于现实世界交流的课程都是掌握英语的关键。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.