求一段sql语句的写法

wangzhenbo 2006-01-11 06:30:59
假设一个教师对应多个学生,现在要找出姓名为"张三"的教师所对应的学生中出生日期最早的一个,不知sql语句该如何写?
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhenbo 2006-01-13
  • 打赏
  • 举报
回复
不好意思,忘了讲我的问题实际上是教师和学生两个表.不过从各位的回复中我已经知道如何写了.谢谢.
zzzjaychung 2006-01-11
  • 打赏
  • 举报
回复
fyming() 的方法真是投机取巧啊,
不过应该是最简便的方法了。
至少不用二层子句,但对于ROWCOUNT和二层子句的执行效率,我到是没有研究过。

因为SQL对于子句是有优化的,但对于ORDER,优化很难。
所以通常来说,子句的COST比较ORDER要小(当子句不太复杂时)。
fyming 2006-01-11
  • 打赏
  • 举报
回复

凑凑热闹
除了上面各位兄弟们的写法之外,还可以这样写:
select * from table where 教师='张三' order by 学生生日 set rowcount 1

瞎掰!
$扫地僧$ 2006-01-11
  • 打赏
  • 举报
回复
eg:
select top 1 * from table where 教师='张三' order by 学生生日
Ciny_Cou 2006-01-11
  • 打赏
  • 举报
回复
create table #t(学生 char(8),教师 char(8),出生日期 datetime)

insert into #t values('a','张三','1984-09-07')
insert into #t values('b','张三','1985-09-07')
insert into #t values('c','张三','1986-09-07')
insert into #t values('d','李四','1984-10-07')
insert into #t values('a','李四','1984-09-07')

select * from #t

select 学生,出生日期 from #t where 教师='张三' and 出生日期 in
(select min(出生日期) from #t where 教师='张三')

/*结果
a 张三 1984-09-07 00:00:00.000
b 张三 1985-09-07 00:00:00.000
c 张三 1986-09-07 00:00:00.000
d 李四 1984-10-07 00:00:00.000
a 李四 1984-09-07 00:00:00.000

a 1984-09-07 00:00:00.000

*/
drop table #t
panjinfu80 2006-01-11
  • 打赏
  • 举报
回复
列出表来,才好分析的。
Ciny_Cou 2006-01-11
  • 打赏
  • 举报
回复
select 学生 from #t where 教师='张三' and 出生日期 in
(select min(出生日期) from #t where 教师='张三')

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧