如何创建一个查询,列出少于三个类或类为空值的学生的名称

时间:2017-12-04 05:56:59

标签: mysql sql

我有一个“数据库”,有两个学生表,并注册。学生表有stuid,姓氏,名字。登记表有类似的班级和等级。

我必须返回一个看起来像这样的列表

姓氏
伯恩斯 琼斯 背风处 麦卡锡 里维拉 史密斯

名字

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

我试图做这样的声明

Select lastname, firstname Where Not exists (Select stuid from enroll e where e.stuid = s.stuid) Having count(*) < 3 Group By lastname, firstname;

我知道我需要两个基本合并这两个表,以便我得到有类&lt;的人的结果。 3和目前还没有上课的人。

3 个答案:

答案 0 :(得分:1)

使用LEFT JOINHAVING

 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

答案 1 :(得分:0)

试试这样:

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

答案 2 :(得分:0)

你的&#34; where子句&#34;需要遵循你的&#34; from条款&#34;。试试吧!

 select firstname , lastname
 from student s join enroll e 
 on s.stuid = e.stuid
 Where e.classnumber < 3 and e.classnumber is null