Como definir a variável a partir de uma consulta SQL?
estou a tentar definir uma variável a partir de uma consulta SQL:
declare @ModelID uniqueidentifer
Select @ModelID = select modelid from models
where areaid = 'South Coast'
Obviamente, não estou a fazer isto bem, porque não funciona. Alguém pode sugerir uma solução?
Obrigado!
220
6 answers
Usando seleccionar:
SELECT @ModelID = m.modelid
FROM MODELS m
WHERE m.areaid = 'South Coast'
Usando o conjunto:
SET @ModelID = (SELECT m.modelid
FROM MODELS m
WHERE m.areaid = 'South Coast')
Veja esta questão para ver a diferença entre usar seleccionar e definir em TSQL.
Aviso
Se esta opção indicar devolve vários valores (mau para começar):
- ao usar
SELECT
, à variável é atribuído o último valor que é devolvido (como womp disse), sem qualquer erro ou aviso (isto pode causar erros lógicos) - ao usar
SET
, um erro irá ocorrer
385
Author: OMG Ponies, 2017-05-23 12:26:32
SELECT @ModelID = modelid
FROM Models
WHERE areaid = 'South Coast'
Se a sua declaração select devolve vários valores, à sua variável é atribuído o último valor que é devolvido.
Para referência ao usar Seleccionar com variáveis: http://msdn.microsoft.com/en-us/library/aa259186%28SQL.80%29.aspx
20
Author: womp, 2010-10-20 04:04:23
declare @ModelID uniqueidentifer
--make sure to use brackets
set @ModelID = (select modelid from models
where areaid = 'South Coast')
select @ModelID
19
Author: greg121, 2016-05-18 09:04:57
{[[2]} prefiro apenas ajustá - lo a partir da declaração de declaração
DECLARE @ModelID uniqueidentifer = (SELECT modelid
FROM models
WHERE areaid = 'South Coast')
8
Author: Joshua Duxbury, 2017-12-06 11:10:28
Usar TOP 1
caso contrário, poderá causar erro se a consulta devolve várias linhas.
SELECT TOP 1 @ModelID = m.modelid
FROM MODELS m
WHERE m.areaid = 'South Coast'
4
Author: manu vijay, 2018-03-01 18:09:49
Select @ModelID =m.modelid
From MODELS m
Where m.areaid = 'South Coast'
Neste caso, se tiver dois ou mais resultados devolvidos, o resultado é o último registo. Portanto, esteja ciente disso se você pode ter mais dois registros retornados como você pode não ver o resultado esperado.
1
Author: Mohammad Farahani, 2018-04-30 11:06:21