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