select student.ID, course_id
from (
select student.ID, course_id
from student,takes
where student.id = takes.id
group by student.ID,course_id
having count(student.ID) >1
)
group by student.id
having count(*)>2
我是sql的新手,并且在嵌套子查询中苦苦挣扎。 这就是我所做的,试图找到至少一次重修至少3门课程的人。它没有用。我知道这看起来很奇怪......
答案 0 :(得分:1)
完全披露:我没有对语法错误进行测试,但我确实看到了代码中的两个主要问题。 答:您需要为子查询提供别名 B:您需要在子查询中使用变量名以及外部查询中的新别名(请注意,我已为内部查询中的student.id指定了" student_id"的别名)
select
retakes.student_id,
retakes.course_id
from
(
select
student.ID student_id,
course_id
from student,takes
where student.id = takes.id
group by student.ID, course_id
having count(*) >1
) retakes
group by retakes.student_id
having count(*)>2
如果您包含了原始帖子(或任何后续答案)所带来的错误,那将会很有帮助。