当前位置: 代码迷 >> Sql Server >> ,关于@变量赋值的有关问题
  详细解决方案

,关于@变量赋值的有关问题

热度:43   发布时间:2016-04-24 09:15:22.0
求助,关于@变量赋值的问题
本帖最后由 u013200703 于 2015-04-01 19:57:35 编辑
渣渣新手,百度了没找到答案。。。
无法从select 语句返回结果集,无法在同一个select语句中为变量赋值。这句话是什么意思。。。?
 select make,
           @model = model --wrong  这里为什么是wrong...?
 from dbo.equipment
 where eqid = 2

谢谢喽~
------解决思路----------------------
引用:
当结果集返回一个以上的值时,不是赋给变量最后一个记录的值吗。。。

对,但是有很大不确定性.就是要赋值为最后一条记录的值,一般也是选top 1 … order by 字段名 desc
------解决思路----------------------
select make,
           @model = model --wrong  这里为什么是wrong...?
 from dbo.equipment
 where eqid = 2

头一个是 make ,系统就认为你这是一个普通的查询,而不是赋值。 但是你后又使用了变量@model ,系统会认为你要把 @model 做为一个列的别名来用,别名是不能以@开头的。

总之一句话:查询多列时,要么都赋给变量,要么是一个普通查询(可以取别名,也可不取别名,也可以部分列取别名)。
------解决思路----------------------
实际是多了make字段,去掉就对了,可以取model字段的最后一个值
------解决思路----------------------
@model 需要事先定义

比如 declare @model varchar(50)
------解决思路----------------------
这种情况只适合返回一条数据情况
------解决思路----------------------
引用:
渣渣新手,百度了没找到答案。。。
无法从select 语句返回结果集,无法在同一个select语句中为变量赋值。这句话是什么意思。。。?
 select make,
           @model = model --wrong  这里为什么是wrong...?
 from dbo.equipment
 where eqid = 2

谢谢喽~

要么赋值

 select @model = model
 from dbo.equipment
 where eqid = 2

要么返回数据集

 select make
 from dbo.equipment
 where eqid = 2


一条SQL语句二者只能选其一
  相关解决方案