列变量???

w_jlcc 2005-12-25 02:45:04
我在存储过程中,一个很大的while循环中会用到一个IN逻辑表达式,如下所示:
@xy IN (select yval from table1 where ....)
有没有这样变量或什么方式,存放select yval from table1 where ....出的一列数据。
否则每循环一次,都要到数据库中select一遍,效率太低!

请高手指点
...全文
123 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
w_jlcc 2005-12-25
  • 打赏
  • 举报
回复
期待着做过此类工作兄弟、姐妹出现
w_jlcc 2005-12-25
  • 打赏
  • 举报
回复
有没有更好的方式了???
lw1a2 2005-12-25
  • 打赏
  • 举报
回复
哦,你是那样呀
用这个:

if exists(select 1 from table1 where yval=@xy..)
w_jlcc 2005-12-25
  • 打赏
  • 举报
回复
唉,结果不容乐观啊。
其实我的table1本身就是一个在内存中的临时表。现在我想回避的是:
如何不在循环体内做select

mislrb 2005-12-25
  • 打赏
  • 举报
回复
试试这个:
if (exists (select top 1 1 from table1 where col=@xy and 你的条件))
w_jlcc 2005-12-25
  • 打赏
  • 举报
回复
#tmp 中是一列值啊,有很多条记录啊????
w_jlcc 2005-12-25
  • 打赏
  • 举报
回复
lw1a2(一刀 知我者谓我心忧,不知我者谓我何求) ,你好,你说的在循环体内怎么做???

没看懂:-(

我的逻辑表达式就是类似于:if(@xy IN (select yval from table1 where ..))
指点下我该怎么改呢???
lw1a2 2005-12-25
  • 打赏
  • 举报
回复
循环前先把结果保存的一个临时表里:
select yval into #tmp from table1 where ...
然后,每次循环:
....
from ...,#tmp
@xy=#tmp.yval

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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