sql-基于同一个表中的多个条目进行选择?

disho6za  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(364)

如果我的表是这样设置的:

Apply: studentID, cName

Student: studentID, sName

如果申请中有以下条目,如何列出studentid和sname from student:

Apply.studentID = Student.studentID AND Apply.cName = "College1"

AND

Apply.studentID = Student.studentID AND Apply.cName = "College2"

最后,我要做的是列出申请过“college1”和“college2”这两所大学的学生。。

ercv8c1e

ercv8c1e1#

你可以用 CTE 以避免重复代码。

with
    cte
as
(
    select
        studentID
    from
        [Apply]
    where
        cName   in('College1', 'College2')
)
select
    s.sName
from
    cte
inner join
    Student s
on
    cte.studentID = s.studentID;
8qgya5xd

8qgya5xd2#

您可以使用以下两个条件检查它是否存在:

select * from Student s
where exists 
(select * from Apply a where a.StudentId = s.StudentId and a.cName = 'College1') and
exists 
(select * from Apply a where a.StudentId = s.StudentId and a.cName = 'College2');
lstz6jyr

lstz6jyr3#

通过执行两个子查询(一个子查询获取应用于college1的studentid,另一个子查询获取应用于college2的studentid),可以确保从student返回的学生在两个子查询结果集中都存在studentid。

SELECT sName
FROM Student 
WHERE studentID IN (
    SELECT DISTINCT studentID FROM Apply WHERE cName='College1'
)
AND studentID IN (
    SELECT DISTINCT studentID FROM Apply WHERE cName='College2'
)

相关问题