如何从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,例如,如果你有两个或更多的结果,如果你使用设置你不能预期的结果