让学生(student_id,course_id,course_name)只使用一门课程,使用一个没有子查询且根本没有连接的简单SQL语句
student_id course_id course_name
---------------------------------------------
1 1000 'CS 101'
2 1000 'CS 101'
1 2000 'CHEM 200'
2 3000 'ENG 211'
3 1000 'CS 101'
4 5000 'Bio 400'
任何人都请我这个。试过很多方法,但没有子查询就无法得到答案。
答案 0 :(得分:1)
将group by
与having
select student_id,count(course_id) as num
from students group by student_id
having num =1
或者: -
select student_id
from students group by student_id
having count(course_id) =1
答案 1 :(得分:1)
只需一门课程即可为学生检索STUDENT_ID:
SQL> SELECT student_id
2 FROM students
3 GROUP BY student_id
4 HAVING COUNT(course_id) = 1
5 /
STUDENT_ID
----------
4
3
Elapsed: 00:00:00.09
SQL>
但是为了获得其他信息,例如课程名称,我们需要使用子查询或加入。
答案 2 :(得分:-2)
如何使用GROUP BY
和HAVING COUNT
SELECT student_id, course_name FROM students
GROUP BY student_id, course_name
HAVING COUNT(course_id) = 1