我试图从一个SQL查询设置一个变量:
declare @ModelID uniqueidentifer
Select @ModelID = select modelid from models
where areaid = 'South Coast'
很明显,我做得不对,因为它不起作用。谁能提出一个解决方案?
谢谢!
我试图从一个SQL查询设置一个变量:
declare @ModelID uniqueidentifer
Select @ModelID = select modelid from models
where areaid = 'South Coast'
很明显,我做得不对,因为它不起作用。谁能提出一个解决方案?
谢谢!
当前回答
您可以使用这个,但请记住,您的查询只给出一个结果,多个结果将抛出异常。
declare @ModelID uniqueidentifer
Set @ModelID = (select Top(1) modelid from models where areaid = 'South Coast')
另一种方法:
Select Top(1)@ModelID = modelid from models where areaid = 'South Coast'
其他回答
您可以使用这个,但请记住,您的查询只给出一个结果,多个结果将抛出异常。
declare @ModelID uniqueidentifer
Set @ModelID = (select Top(1) modelid from models where areaid = 'South Coast')
另一种方法:
Select Top(1)@ModelID = modelid from models where areaid = 'South Coast'
我更喜欢从declare语句中设置它
DECLARE @ModelID uniqueidentifer = (SELECT modelid
FROM models
WHERE areaid = 'South Coast')
使用选择
SELECT @ModelID = m.modelid
FROM MODELS m
WHERE m.areaid = 'South Coast'
使用设置
SET @ModelID = (SELECT m.modelid
FROM MODELS m
WHERE m.areaid = 'South Coast');
然后,您可以使用SELECT来显示@ModelID的值,或者在代码中使用该变量。
SELECT @ModelID
请参阅此问题了解在TSQL中使用SELECT和SET的区别。
警告
如果SELECT语句返回多个值(开头就不好):
当使用SELECT时,变量被赋给返回的最后一个值(正如womp所说),没有任何错误或警告(这可能会导致逻辑错误) SET查询只有在查询结尾没有使用分号时才会返回错误
SELECT @ModelID = modelid
FROM Models
WHERE areaid = 'South Coast'
如果您的选择语句返回多个值,则您的变量将被分配返回的最后一个值。
关于对变量使用SELECT的参考:http://msdn.microsoft.com/en-us/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