[英]SQL Selecting with 2 entries in 1 table
我有一個帶有名稱和大學課程的表格,每個注冊的課程在表格中是一個不同的條目
NAME COURSE
StudA Bio
StudA Maths
StudB Maths
StudC Bio
StudC Maths
如何選擇所有同時注冊了生物和數學的學生? 我試過了
SELECT * FROM Table WHERE Course = 'Bio' And Course = 'Maths' GROUP BY Name;
但是我沒有結果。
我需要把結果都交給同一個學生。 即只應提供StudA和B,因為它們都注冊了兩個課程。
使用OR
代替AND
:
SELECT *
FROM Table
WHERE Course = 'Bio' OR Course = 'Maths'
GROUP BY Name;
AND
返回帶有Course ='Bio' 和 'Maths'的記錄(不會同時發生)。
SQL Fiddle中的示例。
如果您正在尋找同時參加這兩個課程的學生:
SELECT *
FROM TableName
WHERE Course = 'Bio' OR Course = 'Maths'
GROUP BY Name
HAVING COUNT(*)=2
SQL Fiddle中的示例。
您可以使用IN子句:
SELECT * FROM Table WHERE Course IN ('Bio', 'Maths') GROUP BY Name;
它檢查列值是否對應於所顯示列表中的列值。
SELECT * FROM Table WHERE Course IN('Bio', 'Maths') GROUP BY Name;
請嘗試這個。
這取決於您的意思,您是在尋找同時注冊數學和生物專業的學生,還是正在其中一個注冊的學生?
-學生注冊了數學和生物
select NAME
from T
where Course IN('Bio', 'Maths')
group by NAME
having count( distinct COURSE ) = 2
您應該使用GROUP BY
但條件為HAVING COUNT(*)=2
因此在這種情況下,您將選擇兩個課程都注冊的學生:
SELECT Name
FROM Table
WHERE Course = 'Bio' or Course = 'Maths'
GROUP BY Name
HAVING COUNT(*)=2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.