原文在http://polugen.mblogger.cn
这个问题在Sybase和Sql Server中存在,大家都很熟悉如下代码
Declare @s varchar(200)
select @s=''
SELECT @s=@s+F_XTBH FROM LSXTMC
PRINT @s--返回F_XTBH的所有连接结果
它是如何赋值的呢,应该是检索完一条语句,然后赋值
但是如下语句,注意,增加了一个ORDER BY
Declare @s varchar(200)
select @s=''
SELECT @s=@s+F_XTBH FROM LSXTMC ORDER BY F_XTBH
PRINT @s--返回F_XTBH排序后最后一条记录的值
估计可能的情况是,在数据库先不进行计算,ORDER by之后再进行一次执行赋值,这样SELECT @s=@s+F_XTBH 之执行了一次。