Estoy tratando de establecer una variable a partir 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!
sql
sql-server
tsql
Mr Cricket
fuente
fuente
Respuestas:
Usando SELECT:
Usando SET:
Consulte esta pregunta para ver la diferencia entre usar SELECT y SET en TSQL .
Advertencia
Si esta instrucción select devuelve múltiples valores (malos para empezar):
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)SET
, se producirá un errorfuente
Si su declaración select devuelve múltiples valores, a su variable se le asigna el último valor que se devuelve.
Para referencia sobre el uso de SELECT con variables: http://msdn.microsoft.com/en-us/library/aa259186%28SQL.80%29.aspx
fuente
fuente
Prefiero simplemente configurarlo desde la declaración de declaración
fuente
Use
TOP 1
si la consulta devuelve varias filas.fuente
Puede usar esto, pero recuerde que su consulta da 1 resultado, múltiples resultados arrojarán la excepción.
De otra manera:
fuente
En este caso, si tiene dos o más resultados devueltos, entonces su resultado es el último registro. Por lo tanto, tenga en cuenta esto si tiene dos registros más devueltos ya que es posible que no vea el resultado esperado.
fuente
Hay tres enfoques:
A continuación, la consulta detalla las ventajas y desventajas de cada una:
fuente
Para ASIGNAR variables usando un SQL, seleccione la mejor práctica como se muestra a continuación
SI tiene que asignar más de una variable en una sola línea, puede usar esta misma SELECCIONAR EN
fuente