原查询语句
select stu.* from student stu
inner join (select * from score sco
inner join (
select cou.c_id from course cou
inner join teacher tea
on tea.t_id=cou.t_id
where tea.t_name='张三') couu
on couu.c_id=sco.c_id
)scoo
on stu.s_id=scoo.s_id
单独执行内关联里的SQL可以正常执行,查询结果如下
可以看到返回结果有两个“c_id”,当查出来的虚拟表中有相同名称的字段的时候,就需要定义别名,要不无法识别。
修改后的查询语句
select stu.* from student stu
inner join (select sco.s_id from score sco
inner join (
select cou.c_id from course cou
inner join teacher tea
on tea.t_id=cou.t_id
where tea.t_name='张三') couu
on couu.c_id=sco.c_id
)scoo
on stu.s_id=scoo.s_id
运行结果