我有一个表PATIENT,上面有生日。我需要运行一个查询,该查询仅返回比最小年龄大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);
答案 0 :(得分:0)
不要在Google上搜索“嵌套”,这是另一回事。 Google“子查询”。
SELECT Phone, Birthday
FROM PATIENT
WHERE Birthday - 2 > (
SELECT MIN(Birthday)
FROM PATIENT
);
答案 1 :(得分:0)
在这里,我们从患者中选择生日较大的两个字段,然后从嵌套选择中选择最近生日并加3年的嵌套字段。希望这为您指明了正确的方向。
SELECT Phone, Birthday
FROM PATIENT
WHERE Birthday >(
SELECT DateAdd(yy, 3, Cast(MIN(Birthday) As datetime))
FROM PATIENT);
答案 2 :(得分:0)
如果您的年龄比您大3岁,那么您希望生日的岁数相差3,那么您可以使用DateAdd()
函数:
select phone, birthday from patient
where year(DateAdd('yyyy', -3, birthday)) = (
select year(min(birthday))
from patient
)
或
select phone, birthday from patient
where year(birthday) - 3 = (
select year(min(birthday))
from patient
)
答案 3 :(得分:0)
您可以使用子查询来获取最早的生日,然后进行日期比较。看起来像:
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年,具体取决于您所在的日期