CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

大家一定进来帮忙解决这个SQL语句

楼主fake_wolf(狼)2001-12-15 11:21:35 在 MS-SQL Server / 基础类 提问

又一个表   table   a   字段   oid(number),text(varchar2);  
  我有一个varray存放Number类型的数组   array  
   
  我想从表a   中选择出oid在array中的记录  
   
  select   text   from   a   where   oid   in   array?????    
   
   
     
  问题点数:50、回复次数:20Top

1 楼panther_totem(青争岁月)回复于 2001-12-15 11:28:05 得分 0

学习Top

2 楼N_chow(Yukon)回复于 2001-12-15 11:32:12 得分 0

你這個Array應該是在前端吧?  
  假若你的前端是用VB好了,(其它原理也一樣)  
          Dim   p()   As   String  
          Dim   strSql   As   String  
           
          ReDim   p(2)  
          p(0)   =   "1"  
          p(1)   =   "120"  
          p(2)   =   "300"  
           
          strSql   =   "   Select   [text]   from   a   where   oid   IN   ("   &   Join(p,   ",")   &   ")"  
           
          然後再把這條SQL送出去執行。Top

3 楼fake_wolf(狼)回复于 2001-12-15 11:34:45 得分 0

不是的,就是一个SQL语句Top

4 楼N_chow(Yukon)回复于 2001-12-15 11:41:33 得分 0

用的是什麼DBMS?竟然有數組?Top

5 楼Philip1314(勇敢的心)回复于 2001-12-15 11:51:49 得分 0

有一个办法,将数组放在一个临时表里面  
  select   text   from   a   where   oid   in   temptableTop

6 楼fake_wolf(狼)回复于 2001-12-15 23:19:06 得分 0

哥们,在我的系统里,经常要用到这种查询,如果每次查询都用到  
  临时表,很难维护Top

7 楼paul_chow(paul)回复于 2001-12-16 00:33:11 得分 0

用游标试试吧!Top

8 楼fake_wolf(狼)回复于 2001-12-16 03:29:45 得分 0

to   : paul_chow  
  是否能说的详细一点Top

9 楼liujianjun_(流星尔)回复于 2001-12-16 08:19:38 得分 0

用的是什么数据库Top

10 楼fake_wolf(狼)回复于 2001-12-16 09:58:34 得分 0

oracle数据库Top

11 楼myand(myand)回复于 2001-12-16 22:04:52 得分 50

请看下贴的回复  
  http://www.csdn.net/Expert/topic/422/422790.shtmTop

12 楼fake_wolf(狼)回复于 2001-12-16 23:16:58 得分 0

正在消化你的思路Top

13 楼fake_wolf(狼)回复于 2001-12-18 13:47:34 得分 0

to   myrand   :我试过了,的确比原来的快了很多,  
  但从应用的角度上讲,仍然较慢。比如说,在从一个6000  
  个OID的集合里选择,大约需要30秒,这显然不是很理想。  
  但这方法比原来好多了,现,奉送上50分。可收到否。  
  以后还要向你多请教。  
  多了,用一维数组更合适。Top

14 楼fake_wolf(狼)回复于 2001-12-18 13:55:49 得分 0

to   myrand   :我试过了,的确比原来的快了很多,  
  但从应用的角度上讲,仍然较慢。比如说,在从一个6000  
  个OID的集合里选择,大约需要30秒,这显然不是很理想。  
  但这方法比原来好多了,现,奉送上50分。可收到否。  
  以后还要向你多请教。  
  多了,用一维数组更合适。Top

15 楼progame(www.progame.org)回复于 2001-12-18 14:18:22 得分 0

加上分隔符,写到临时表  
   
  如果oracle最大字符限制的话  
   
  就估算一下,写多条记录  
   
  然后进行连接查询,不知效果如何Top

16 楼progame(www.progame.org)回复于 2001-12-18 14:21:21 得分 0

6000个oid,写30条记录,你做一下测试吧  
   
  临时表只要一个字段,格式为"|oid1|0id2|。。。。"  
   
  不知会怎么样,仅供参考Top

17 楼progame(www.progame.org)回复于 2001-12-18 14:23:35 得分 0

如果你的table记录数在十万数量级  
   
  普通计算机,完成上述过程应该只要几秒吧Top

18 楼fake_wolf(狼)回复于 2001-12-19 23:11:47 得分 0

由于某种原因,不能使用临时表Top

19 楼progame(www.progame.org)回复于 2001-12-20 00:05:35 得分 0

由于某种原因,完全可以做一个表  
   
  为什么一定要临时表,唉!Top

20 楼progame(www.progame.org)回复于 2001-12-20 00:06:03 得分 0

不可理喻Top

相关问题

  • 这个sql语句对吗?
  • 这个SQL语句对吗?
  • 看看这个sql语句
  • 看看这个sql语句
  • SQL 语句问题,一定给分
  • SQL语句问题,一定给分
  • 这个汇总语句如何简化?sql语句问题
  • 如何用一个SQL语句写这个更新语句?
  • 这个Sql语句怎么写?
  • 如何写这个SQL语句?

关键词

  • 查询
  • 选择
  • oid
  • 表
  • 临时
  • 记录
  • array
  • from a where
  • text
  • select

得分解答快速导航

  • 帖主:fake_wolf
  • myand

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo