sql无效标识符,使用别名

时间:2016-02-04 02:41:02

标签: sql oracle nested

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门课程的人。它没有用。我知道这看起来很奇怪......

1 个答案:

答案 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

如果您包含了原始帖子(或任何后续答案)所带来的错误,那将会很有帮助。