好贷网好贷款

请教“递归的select变量”的一个问题 20skyairmj]

发布时间:2016-12-4 22:27:14 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"请教“递归的select变量”的一个问题 20skyairmj]",主要涉及到请教“递归的select变量”的一个问题 20skyairmj]方面的内容,对于请教“递归的select变量”的一个问题 20skyairmj]感兴趣的同学可以参考一下。

递归的select变量是指使用select语句和子查询将一个变量与其自身拼接起来。 语法形式如下: select @variable = @variable + table.column from table          ---见《sql server2000宝典》:P354 这是一种很优美的查询方法,我也经常使用这种方式来水平连接表中的一列 可是,有的时候,却得到非预期的结果,比如没有前面的数据,只得到最后一行的数据 比如:表 temp 结构和数据如下 A   B              --- a1  b1 a2  b2 语句如下: DECLARE @a VARCHAR(100) SET @a='' SELECT @[email protected]+A FROM temp 理论上应该是 a1a2,有些情况下得到的却是 a2 想问一下:这种情况是怎么出现的?如何才能避免?

“有些情况” 不明白

什么情况下会出现阿?

DECLARE @a VARCHAR(100) 的长度加大

确实有些情况是有问题的 不过不是楼主举的这样简单的情况 我遇到的是有复杂(所谓复杂是指建国计算后作为一个排序项)的排序的情况,个人理解,这和执行计划有很大关系

TO i9988(冒牌j9988 V0.3) 对的,实际情况不是这样的 我只是举的简单的例子 一般包含筛选条件和排序,就会有出现这种情况 如 select @a = @a + A from temp where A>'a' order by A 这样就可能出现非预期的结果 那如何避免这种结果呢?? TO Softlee81307(孔腎) 长度不是问题的 

一般包含筛选条件和排序,就会有出现这种情况 如 select @a = @a + A from temp where A>'a' order by A 不知道这样?呢 select @a = @a + A  from (select  A from temp where A>'a' order by A)  t --我的意思是把条件都封装起来

order by 是不能写在子查询里面的...

关注,很喜欢这种用法。但是还没出现过这种情况。。 气愤的是oracle不支持这种写法。。。。

学习。。。

学习

skyairmj(方外) ( ) 信誉:100    Blog  2006-10-30 17:42:53  得分: 0   order by 是不能写在子查询里面的...    那就放到外面嘛!

放在外面也有可能出现那种情况的 我现在遇到了一个问题: 数据库的升级sql语句 在本机、测试人员机器和实施人员的机器上都能运行良好 可升级到客户的机器上,就出现了那种情况:只有最后一个值 烦恼中.....

一位朋友给我发了个消息: 你的问题:“递归的select变量”的一个问题  我想你应该在客户的SQL Server上针对有问题的Table执行 DBCC DBREINDEX('tablename') .... 我想似乎有可能是这个原因: 我的操作包括插入新数据,再生成递归变量,这些是放在一个批处理里面执行的 在插入数据库之后,并没有执行GO,而是立即进行递归变量查询 这有可能导致索引没有完全更新.... 有个新的问题: 修改数据库表后(影响到建立索引的列) 数据库是在什么时候重建索引的? 这期间会不会影响到普通的基于索引的select操作

上一篇:记录范围怎样写??~~~急 20CSDN]
下一篇:触发器问题 20xingxing2378]

相关文章

相关评论