SQL查询"相同"问题 返回
Sql论坛
沟通中
4
1994
阿寶哥 发布于2025/2/8
悬赏:20 飞吻
我有2张表:student(s_id, s_name), score(s_id, c_id, s_score),请问我要如何写出SQL查询找出和'05'号学生选修相同科目的学生?
热忱回答(4)
-
fate sta VIP0
2025/2/10SELECT DISTINCT s.s_id, s.s_nameFROM student sJOIN score sc ON s.s_id = sc.s_idWHERE sc.c_id IN ( SELECT c_id FROM score WHERE s_id = '05')AND s.s_id <> '05';
0 回复 -
阿寶哥 VIP0
2025/2/20@fate sta:感谢您的解答,但实测结果不正确!会把所有和"05"号学生修至少一门相同课程的学生都找出来。
0 回复 -
咪咝忒杜 VIP0
2025/3/3create table student(s_id varchar(100),s_name varchar(100)) create table score(s_id varchar(100), c_id varchar(100), s_score money) insert into student values('01','A1') insert into student values('02','A2') insert into student values('03','A3') insert into student values('04','A4') insert into student values('05','A5') --与05相同 insert into score values('01','01',100) insert into score values('01','02',100) insert into score values('01','03',100) --比05少 insert into score values('02','01',100) insert into score values('02','02',100) --比05多 insert into score values('03','01',100) insert into score values('03','02',100) insert into score values('03','03',100) insert into score values('03','04',100) --数目相同但科目不同 insert into score values('04','01',100) insert into score values('04','02',100) insert into score values('04','04',100) --05 insert into score values('05','01',100) insert into score values('05','02',100) insert into score values('05','03',100) select a.s_id--,count(a.c_id),count(b.c_id) from (--别人选的课 select s_id,c_id from score where s_id <> '05' ) a left join (--05选的课 select c_id from score where s_id = '05' ) b on a.c_id = b.c_id group by a.s_id having count(a.c_id) = (select isnull(count(*),0) from score where s_id = '05') and count(b.c_id) = (select isnull(count(*),0) from score where s_id = '05') --如果可以步骤 可以把05的科目数量先求出0 回复 -
阿寶哥 VIP0
2025/3/8@咪咝忒杜:ISNULL()函数仅适用于SQL Server,可否改为较一般化的通用版本?谢谢!
0 回复