求救:一个SQL查询语句

yangzhixue 2006-08-21 03:17:39
本人最近做一个管理系统,遇到一个查询问题,如下:
***********
用户表结构(w_manage)
***********
字段:
w_id(编号) w_name(名字) w_place(籍贯) w_date(登记日期)
数据:
w_id w_name w_place w_date
-------------------------------
1 张三 河南 2005-5-7
2 李四 北京 2006-9-24
3 王二 广州 2001-1-3
4 陈六 河南 2005-1-22
5 周七 北京 1995-2-4
6 罗五 广州 2002-3-13
... ... ... ...

现在我要的是,查询出每个籍贯的前100条记录,每个籍贯的信息以日期来排序。
则,查询结果为:
w_id w_name w_place w_date
-------------------------------
4 陈六 河南 2005-1-22
1 张三 河南 2005-5-7
... ... ... ...
5 周七 北京 1995-2-4
2 李四 北京 2006-9-24
... ... ... ...
3 王二 广州 2001-1-3
6 罗五 广州 2002-3-13
... ... ... ...


请教各位大虾,这个SQL语句怎么写。前一阵子,我试着写了一下,其执行效率非常的低,表数据总量在5000条时,几乎不能正常完成预想效果。语句如下:
sqlect a.* from w_manage a
where a.id in
(
select top 100 b.id from w_manage b where
(
a.w_place=b.w_place
)
orer by b.w_date
)
...全文
109 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2006-08-21
  • 打赏
  • 举报
回复
给 w_date作个索引.这个可以利用到索引.
fcuandy 2006-08-21
  • 打赏
  • 举报
回复
select * from tb a
where 100>(select count(1) from tb b where b.w_date<a.w_date)

这个稍好一点点,不过也很慢.

34,587

社区成员

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

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