簡體   English   中英

SQL在1個表中選擇2個條目

[英]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

SQLFiddle演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM