Mysql 我如何创建一个查询,列出上课少于三节课或上课时间为空的学生的姓名

Mysql 我如何创建一个查询,列出上课少于三节课或上课时间为空的学生的姓名,mysql,sql,Mysql,Sql,我有一个数据库,有两个表,一个学生,一个注册。学生表有stuid、lastname、firstname。登记表有stuid classnumber和grade 我必须返回一个如下所示的列表 姓 灼伤 琼斯 李 麦卡锡 里维拉 史密斯 名字 爱德华 玛丽 佩里 欧文 简 汤姆 我试图做这样的陈述 选择lastname,firstname 如果不存在,则从enroll e中选择stuid,其中e.stuid=s.stuid 计数*小于3的 按姓、名分组 我知道我需要两个表来合并这两个表,这样我就可以

我有一个数据库,有两个表,一个学生,一个注册。学生表有stuid、lastname、firstname。登记表有stuid classnumber和grade

我必须返回一个如下所示的列表

姓 灼伤 琼斯 李 麦卡锡 里维拉 史密斯

名字

爱德华 玛丽 佩里 欧文 简 汤姆

我试图做这样的陈述

选择lastname,firstname 如果不存在,则从enroll e中选择stuid,其中e.stuid=s.stuid 计数*小于3的 按姓、名分组

我知道我需要两个表来合并这两个表,这样我就可以得到班数<3的人和当前没有参加某个班的人的结果

试着这样做:

SELECT lastname, firstname FROM student st LEFT JOIN enroll el 
ON st.stuid = el.stid 
WHERE (el.classnumber < 3 OR el.classnumber IS NULL) 

where子句必须位于from子句之后。那就试试这个

 select firstname , lastname
 from student s join enroll e 
 on s.stuid = e.stuid
 Where e.classnumber < 3 and e.classnumber is null 
使用左连接并具有

 SELECT st.stuid, lastname, firstname 
 FROM student st 
 LEFT JOIN enroll el ON st.stuid = el.stuid 
 GROUP BY st.stuid 
 HAVING count(el.stuid) < 3