SQL SERVER where字句的问题
关于这段代码中,当‘王非’这个名字在表中不止一个是怎么办啊?!
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日期函数呢
[其他解释]
嗯嗯,六楼的说的是,新手新手啊