注册 登录
编程论坛 SQL Server论坛

关于sql动态小问题

上帝之允 发布于 2010-11-13 17:20, 487 次点击
为什么set @sql=''
select @sql=@sql+','+工程人员
from (select distinct 工程号,工程人员 from zhangsan) x where 工程号=@工程号
return @sql

select @sql=工程人员
from (select distinct 工程号,工程人员 from zhangsan) x where 工程号=@工程号
return @sql 不一样,为什么后者可以输出多项
 那为什么@SQL一定要定义初始值
还有重要的是为什么可以连续输出,原理是什么,谢谢!!
6 回复
#2
tangyunzhong2010-11-13 17:39
回复 楼主 上帝之允
你的第二个语句是赋最后一个数据的,你的第一个语句是把多个值连接起来。
  执行看一下,第二个语句返回的是最后一条数据值。
#3
qingshuiliu2010-11-13 18:32
select @sql=工程人员
from (select distinct 工程号,工程人员 from zhangsan) x where 工程号=@工程号
()中的是子视图,就是一个数据源。那么你从子视图中取到“工程号”,“工程人员”两个字段。
两个语句都应该输出一个结果。有初始值是为了防止程序出错。
不明白楼主:“连续输出”是什么意思
你可以把你输出的结果贴出来,让大家看一下吗?

#4
上帝之允2010-11-13 20:31
就是会出现
例如
工程号  工程人员
A       张三,李四,王五
的效果
而第二个只能输出一个满足条件的工程人员
为什么,原理是什么??
#5
cnfarer2010-11-13 20:41
你可以这样理解:一个SELECT语句执行时,相当于一个程序语言中的循环过程。
#6
上帝之允2010-11-13 20:42
那为什么第二个不可以呢??
#7
qingshuiliu2010-11-13 22:20
select @sql=@sql+','+工程人员
select @sql=工程人员
第二个,不行,只能输出最后一个
因为@sql=@sql+相当于,不断的加入!
1