Sql 如何从“生日”列中查找最小年龄,但仅选择比最小年龄大3岁的年龄

Sql 如何从“生日”列中查找最小年龄,但仅选择比最小年龄大3岁的年龄,sql,ms-access,Sql,Ms Access,我有一张桌子,病人,上面有出生日期。我需要运行一个查询,只返回比最年轻的患者大3岁的患者 我试图找到一个关于嵌套sql语句的好的介绍教程,因为我的在线课程很糟糕 就我所知: SELECT Phone, Birthday FROM PATIENT WHERE Birthday >( SELECT * FROM PATIENT GROUP BY Birthday ORDER BY Birthday DESC SELECT MIN(Birthday) AS MinAges FROM PATIEN

我有一张桌子,病人,上面有出生日期。我需要运行一个查询,只返回比最年轻的患者大3岁的患者

我试图找到一个关于嵌套sql语句的好的介绍教程,因为我的在线课程很糟糕

就我所知:

SELECT Phone, Birthday
FROM PATIENT
WHERE Birthday >(
SELECT *
FROM PATIENT
GROUP BY Birthday
ORDER BY Birthday DESC
SELECT MIN(Birthday) AS MinAges
FROM PATIENT);

不要在谷歌上搜索嵌套,那是另一回事。谷歌子查询

SELECT Phone, Birthday
  FROM PATIENT
 WHERE Birthday - 2 > (
           SELECT MIN(Birthday)
             FROM PATIENT
           );

在这里,我们从“患者”中选择这两个字段,其中“生日”大于嵌套的“选择”字段,在该字段中,我们选择最近一次的生日,并向其添加3年。希望这能为你指明正确的方向

SELECT Phone, Birthday
FROM PATIENT
WHERE Birthday >(
SELECT DateAdd(yy, 3, Cast(MIN(Birthday) As datetime))
FROM PATIENT);

如果3岁表示您希望生日的年份相差3岁,则可以使用以下功能:

select phone, birthday from patient
where year(DateAdd('yyyy', -3, birthday)) = (
  select year(min(birthday))
  from patient
)


您可以使用子查询获取最早的出生日期,然后进行日期比较。这看起来像:

select p.*
from patient as p,
     (select max(birthday) as max_birthday
      from patient
     ) as m
where p.birthday <= dateadd("yyyy", -3, m.max_birthday) and
      p.birthday > dateadd("yyyy", -4, m.max_birthday);

请注意,这正好是3年,基于你们的

考试的那个天,我只回答了,因为看起来你们付出了巨大的努力,但这看起来确实像是家庭作业。这是一个很好的互动教程资源,它将涵盖这个材料很好。感谢网站!我正在努力做作业,想知道一个比我的垃圾课更好的学习基础的地方,哈哈。你怎么定义三岁大?这有点模棱两可。如果我正确理解了目标,我需要它根据出生日期确定最低年龄,然后只返回比这个年龄大三岁的。看看表格,最年轻的人的出生日期是2008年4月9日。所以我需要任何2005年或更早的出生日期。谢谢你的帮助!我在想,生日是什么意思?哎呀。甚至都没注意到。我把它读作年龄,认为它是一个整数。使用DateAddyyyy,-2,Birthday>。我需要获取比最年轻的患者大3岁的患者。这就是代码的作用:返回与最年轻的生日相差3年的行。
select p.*
from patient as p,
     (select max(birthday) as max_birthday
      from patient
     ) as m
where p.birthday <= dateadd("yyyy", -3, m.max_birthday) and
      p.birthday > dateadd("yyyy", -4, m.max_birthday);