首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >校内学生查询

校内学生查询
EN

Stack Overflow用户
提问于 2017-03-21 15:43:28
回答 6查看 107关注 0票数 2

假设我有一个schools表和一个students表。students表连接到schools表,并具有NAMEBIRTHDATE列。

我需要所有学校里有学生,他们被称为“吉姆”或“迈克”,并出生在同一天。

类似于:

代码语言:javascript
复制
select *
  from schools s
  join student st in st.schoolId = s.Id
  where (...)
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-03-21 15:54:16

可能使用两个时间表相关的内joi按出生日期

代码语言:javascript
复制
select t1.id from ( 
    select s.id , st.name, st.birthdate
    from schools s
    join student st in st.schoolId = s.Id
    where st.name  = 'jim' 
) t1 
inner join ( 
    select s.id , st.name, st.birthdate
    from schools s
    join student st in st.schoolId = s.Id
    where st.name  = 'mike' 
) t2 on t1.birthdate = t2.birthdate
票数 1
EN

Stack Overflow用户

发布于 2017-03-21 15:49:32

你可以通过两次把学生和学校联系起来来做到这一点。

代码语言:javascript
复制
select  distinct s.*
from    schools s
join    student st1
on      st.schoolId = s.Id
join    student st2
on      st.schoolId = s.Id
where   st1.birthdate = st2.birthdate and
        st1.name = 'Jim' and
        st2.name = 'Mike'
票数 2
EN

Stack Overflow用户

发布于 2017-03-21 15:48:39

您可以简单地使用条件聚合来查找同时具有每个birthdatejoin (或使用IN)的名称的joinIN表,以获取相关的详细信息。

代码语言:javascript
复制
select s.*
from schools s
join (
    select distinct schoodId
    from student
    where name in ('jim', 'mike')
    group by schoodId,
        birthdate
    having count(distinct name) = 2
    ) st on s.Id = st.schoodId;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42931805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档