SQL在1个表中选择2个条目

时间:2014-05-14 12:25:46

标签: mysql sql

我有一个名称和大学课程的表格,每个课程都注册为表格中的不同条目

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应该给予注册,因为他们注册了两种课程。

5 个答案:

答案 0 :(得分:1)

使用OR代替AND

SELECT * 
FROM Table 
WHERE Course = 'Bio' OR Course = 'Maths' 
GROUP BY Name;

AND返回记录,其中包含课程=' Bio' '数学' (它不会在同一时间发生)。

SQL Fiddle中的示例。

如果您正在寻找两门课程的学生:

SELECT *
FROM TableName 
WHERE Course = 'Bio' OR Course = 'Maths' 
GROUP BY Name
HAVING COUNT(*)=2

SQL Fiddle中的示例。

答案 1 :(得分:0)

您可以使用IN子句:

SELECT * FROM Table WHERE Course IN ('Bio', 'Maths') GROUP BY Name;

它检查列值是否与呈现列表中的列值相对应。

答案 2 :(得分:0)

SELECT * FROM Table WHERE Course IN('Bio', 'Maths') GROUP BY Name;

请试试。

答案 3 :(得分:0)

这取决于您的意思,您是在寻找注册了数学和生物学的学生,还是在其中任何一个注册的学生?

- 学生在数学和生物方面注册

 select NAME 
 from T
 where Course IN('Bio', 'Maths')
 group by NAME
 having count( distinct COURSE ) = 2

答案 4 :(得分:0)

您应该使用GROUP BYHAVING COUNT(*)=2条件,因此在这种情况下,您可以选择为这两个班级注册的学生:

SELECT Name 
 FROM Table 
WHERE Course = 'Bio' or Course = 'Maths' 
GROUP BY Name
HAVING COUNT(*)=2

SQLFiddle demo