ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle开发 » 又是一个sql问题

标题: 又是一个sql问题
离线 lonesashimi
希望改名sashimi


精华贴数 0
个人空间 0
技术积分 480 (4105)
社区积分 84 (3819)
注册日期 2001-12-29
论坛徽章:0
      
      

发表于 2002-1-31 19:35 
又是一个sql问题

create table test
(a   varchar2(1),
b    date,
c    number
)
其中存入数据
1   2001-01-01  300
1   2002-10-01  200
2  2001-01-01   100
现要查询a=1的max(b)对应的c,按如下方法写SQL当数据量很大时,会不会变慢
select c from test where b=(select max(b) from test where a=1)
and a=1
有别的写法吗



__________________
lonesashimi
只看该作者    顶部
离线 sunbird
老会员


精华贴数 0
个人空间 0
技术积分 1996 (822)
社区积分 137 (2990)
注册日期 2001-10-12
论坛徽章:3
ITPUB元老会员2006贡献徽章授权会员   
      

发表于 2002-1-31 21:01 
Re: 又是一个sql问题



QUOTE:
最初由 lonesashimi 发布
create table test
(a   varchar2(1),
b    date,
c    number
)
其中存入数据
1   2001-01-01  300
1   2002-10-01  200
2  2001-01-01   100
现要查询a=1的max(b)对应的c,按如下方法写SQL当数据量很大时,会不会变慢
select c from test where b=(select max(b) from test where a=1)
and a=1
有别的写法吗


select  test1.c from   
(select c ,b from test) test1,
(select max(b) b from test where a=1) test2
where test1.b=test2.b


只看该作者    顶部
在线/呼叫 biti_rainy
人生就是如此



精华贴数 38
个人空间 0
技术积分 111199 (4)
社区积分 11832 (132)
注册日期 2001-12-12
论坛徽章:41
现任管理团队成员ITPUB长老会成员ITPUB元老年度论坛发贴之星年度论坛发贴之星ITPUB北京九华山庄2008年会纪念徽章
管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章

发表于 2002-1-31 21:39 
hehe

速度应该不会慢的
sql可能先查出max,然后再查你要的结果
当然,也可能自动给你翻译成表连接的方式再执行


__________________
眼界决定边界,态度决定高度
blog:
人生就是如此
只看该作者    顶部
离线 lonesashimi
希望改名sashimi


精华贴数 0
个人空间 0
技术积分 480 (4105)
社区积分 84 (3819)
注册日期 2001-12-29
论坛徽章:0
      
      

发表于 2002-1-31 22:27 
谢谢两位指点。
同时谢谢两位的签名,又深意。
祝晚安。


__________________
lonesashimi
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问