如何从SQL查询设置variables?

我试图从一个SQL查询中设置一个variables:

declare @ModelID uniqueidentifer Select @ModelID = select modelid from models where areaid = 'South Coast' 

很明显,我没有这样做,因为它不工作。 有人可以提出一个解决scheme吗?

谢谢!

使用SELECT:

 SELECT @ModelID = m.modelid FROM MODELS m WHERE m.areaid = 'South Coast' 

使用SET:

 SET @ModelID = (SELECT m.modelid FROM MODELS m WHERE m.areaid = 'South Coast') 

查看这个问题,了解在TSQL中使用SELECT和SET的区别 。

警告

如果这个select语句返回多个值 (不好的开始):

  • 当使用SELECT ,variables被指定为返回的最后一个值(如womp所说),没有任何错误或警告(这可能会导致逻辑错误)
  • 使用SET ,会发生错误
 SELECT @ModelID = modelid FROM Models WHERE areaid = 'South Coast' 

如果您的select语句返回多个值,那么您的variables将被赋予返回的最后一个值。

有关在variables中使用SELECT的参考: http : //msdn.microsoft.com/zh-cn/library/aa259186%28SQL.80%29.aspx

 declare @ModelID uniqueidentifer --make sure to use brackets set @ModelID = (select modelid from models where areaid = 'South Coast') select @ModelID 

如果查询返回多行,则使用TOP 1,否则可能导致错误。

SELECT TOP 1 @ModelID = m.modelid FROM MODELS m WHERE m.areaid ='South Coast'

 Select @ModelID =m.modelid From MODELS m Where m.areaid = 'South Coast' 

在这种情况下,如果你有两个或两个以上的结果,你的结果是在这个表中的最后一个logging,例如,如果你有两个或更多的结果,如果你使用设置你不能预期的结果