没有子查询和连接的SQL查询

时间:2015-12-15 07:19:05

标签: mysql sql oracle oracle11g

让学生(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'

任何人都请我这个。试过很多方法,但没有子查询就无法得到答案。

3 个答案:

答案 0 :(得分:1)

group byhaving

一起使用
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 BYHAVING COUNT

SELECT student_id, course_name FROM students 
GROUP BY student_id, course_name
HAVING COUNT(course_id) = 1