繁体   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