2015-12-15 52 views
-1

要讓誰採取恰好只有一個課程的學生(student_id數據,COURSE_ID,課程名稱),採用無子查詢一個簡單的SQL語句,並沒有參加所有無子查詢的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' 

任何請給我一個這個。嘗試了很多方法,但沒有子查詢無法得到答案。

+2

您嘗試過哪些方法? –

+0

你想獲得只有1門課程相關的學生嗎? –

+1

爲什麼使用MySQL標籤?不要標記不涉及的產品。 – jarlh

回答

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 
+2

你不能在'having'中使用別名。它應該是'有count(course_id)= 1' – Tatiana

+1

請參閱此鏈接http://stackoverflow.com/questions/200200/can-you-use-an-alias-in-the-where-clause-in-mysql @Tatiana –

+1

它適用於MySQL,不適用於Oracle。我在這裏看到標籤Oracle @rahautos – Tatiana

-2

如何使用GROUP BYHAVING COUNT

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

用於過濾組數據。你應該把它放在羣組之後。 –

+0

此查詢不會返回您認爲它的結果。 – APC

+0

語法錯誤。在GROUP BY之後放置HAVING。 – jarlh

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> 

但要獲得其他信息,如課程名稱,則我們需要使用子查詢或連接。