列了个视图,需要查询aid和为2(选了两门课程)。但是出来的只有列名没有数据(count(aid)=2),把2改为0数据又出来了,但不是我想要的。所以想问问大家我代码哪里打错了啊。
create view cgs
as
select a.name as aname,a.class,c.grade,b.name as bname,a.studentid as aid,c.courseid as cid
from student as a join grade as c
on a.studentid=c.studentid
join course as b
on b.courseid=c.courseid
select aname,class,grade,bname,aid from cgs
group by aname,class,grade,bname,aid having count(aid)>2
;with t as (select aname,count() cts from cgs group by cts having count()=2)
select cgs.* from t join cgs on t.aname=ags.aname
如果要判断同一人在同一班级有2门课程的话,cte里面的分组要加上班级
你的group by分组条件不可能找出count(aid)>2的记录,肯定没有数据的。正确写法是减少group by中的分组条件