varias variable valor stored condiciones con asignar sql sql-server tsql

valor - ¿Cómo establecer la variable de una consulta SQL?



variables @@ sql server (6)

Estoy tratando de establecer una variable de una consulta SQL:

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

Obviamente no estoy haciendo esto bien ya que no funciona. ¿Alguien puede sugerir una solución?

¡Gracias!


Utilizando SELECT:

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

Utilizando SET:

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

Vea esta pregunta para ver la diferencia entre usar SELECT y SET en TSQL .

Advertencia

Si esta declaración de selección devuelve varios valores (mal para empezar):

  • Cuando se utiliza SELECT , a la variable se le asigna el último valor que se devuelve (como dijo womp), sin ningún error o advertencia (esto puede causar errores lógicos)
  • Al usar SET , se producirá un error.

Prefiero simplemente configurarlo desde la declaración de declaración

DECLARE @ModelID uniqueidentifer = (SELECT modelid FROM models WHERE areaid = ''South Coast'')


Utilice TOP 1 contrario, podría causar un error si la consulta devuelve varias filas.

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''

En este caso, si tiene dos o más resultados devueltos, su resultado es el último registro. Por lo tanto, tenga en cuenta esto si puede que le devuelvan dos registros más, ya que es posible que no vea el resultado esperado.


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