我怎样才能 select class 学生-class 协会 table 中给定学生的同学?
How can I select classmates of a given student from a student-class association table?
如果我的 table 如下所示,我如何 select 给定学生的同学?
student_class_assn
student_id class_id
1 1
2 1
3 1
4 2
5 2
6 3
例如,学生 1
有学生 2
和 3
作为同学。
请帮我写一个以已知 student_id
和 select 同学(不包括给定学生)为中心的查询。
这里是一个使用子select的例子。但是你能帮我用连接代替吗?
SET @KNOWN_STUDENT=1;
SELECT
student_id
FROM
student_class_assn
WHERE
class_id IN (
SELECT class_id FROM student_class_assn WHERE student_id = @KNOWN_STUDENT
)
AND student_id != @KNOWN_STUDENT;
鉴于我上面的 table 我希望每个给定的结果如下 student_id
:
1 returns 2,3
2 returns 1,3
3 returns 1,2
4 returns 5
5 returns 4
6 returns NULL
您只需加入 table 并传递条件
SELECT t1.student_id
FROM student_class_assn t
JOIN student_class_assn t1
ON t1.class_id = t.student_id
AND t1.student_id <> 1
WHERE t.student_id = 1
这不会显示没有同学的学生:
select s1.sid,group_concat(s2.sid order by s2.sid,',')
from
stud_class s1 inner join
stud_class s2 on s1.cid=s2.cid
where s1.sid <> s2.sid
group by s1.sid
order by 1
如果我的 table 如下所示,我如何 select 给定学生的同学?
student_class_assn
student_id class_id
1 1
2 1
3 1
4 2
5 2
6 3
例如,学生 1
有学生 2
和 3
作为同学。
请帮我写一个以已知 student_id
和 select 同学(不包括给定学生)为中心的查询。
这里是一个使用子select的例子。但是你能帮我用连接代替吗?
SET @KNOWN_STUDENT=1;
SELECT
student_id
FROM
student_class_assn
WHERE
class_id IN (
SELECT class_id FROM student_class_assn WHERE student_id = @KNOWN_STUDENT
)
AND student_id != @KNOWN_STUDENT;
鉴于我上面的 table 我希望每个给定的结果如下 student_id
:
1 returns 2,3
2 returns 1,3
3 returns 1,2
4 returns 5
5 returns 4
6 returns NULL
您只需加入 table 并传递条件
SELECT t1.student_id
FROM student_class_assn t
JOIN student_class_assn t1
ON t1.class_id = t.student_id
AND t1.student_id <> 1
WHERE t.student_id = 1
这不会显示没有同学的学生:
select s1.sid,group_concat(s2.sid order by s2.sid,',')
from
stud_class s1 inner join
stud_class s2 on s1.cid=s2.cid
where s1.sid <> s2.sid
group by s1.sid
order by 1