declare @age int
set @age=YEAR(GETDATE())
select 学生号,姓名,@age-YEAR(出生日期) as 年龄
from dbo.学生
where 学生号>(select 学生号 from dbo.学生 where 姓名='王非')
and @age-YEAR(出生日期)<(select @age-YEAR(出生日期) from dbo.学生 where 姓名='王非') ------最佳解决方案--------------------
declare @age int
set @age=YEAR(GETDATE())
select 学生号,姓名,@age-YEAR(出生日期) as 年龄
from dbo.学生
where 学生号>(select top(1) 学生号 from dbo.学生 where 姓名='王非')
and @age-YEAR(出生日期)<(select top(1) @age-YEAR(出生日期) from dbo.学生 where 姓名='王非')
------其他解决方案-------------------- select top 1
select max()都行 ------其他解决方案-------------------- declare @age int
set @age=YEAR(GETDATE())
select 学生号,姓名,@age-YEAR(出生日期) as 年龄
from dbo.学生
where 学生号>all (select 学生号 from dbo.学生 where 姓名='王非')
and @age-YEAR(出生日期)<(select @age-YEAR(出生日期) from dbo.学生 where 姓名='王非') ------其他解决方案--------------------
换成
and @age-YEAR(出生日期)< all (select @age-YEAR(出生日期) from dbo.学生 where 姓名='王非') 试试看!! ------其他解决方案-------------------- 楼上的方法都可以 +1 ------其他解决方案-------------------- select dateDiff(year,'1986-10-10',getdate()) 为啥不用SQL dateDiff日期函数呢 ------其他解决方案-------------------- 嗯嗯,六楼的说的是,新手新手啊