Seleccione una fila de la tabla con el valor deseado cuando se selecciona una columna cuyo valor no está en la tabla en la cláusula where con la palabra clave ‘in’.
Tengo una tabla con una de las columnas como ID. Tengo un conjunto de valores que doy en la cláusula where para comparar la columna ‘ID’ usando la palabra clave ‘in’. Quiero seleccionar la fila si el valor en ese conjunto de valores tiene un registro en la tabla. Si no, el valor que no está en la tabla debe ser seleccionado junto con valores vacíos en otras columnas.
Por ejemplo:
Hay una tabla con las columnas ID y Animal. Tiene 8 registros.
Si ejecuto la consulta:
SELECT ID, Animal from #Temp1 where ID in (4,8)
devolverá el siguiente resultado.
Pero, si ejecuto la consulta:
SELECT ID, Animal from #Temp1 where ID in (4,8,12)
debería devolver el siguiente resultado.
davy.ai
Para seleccionar las filas basadas en los valores de la cláusula where y también incluir los valores que no están en la tabla, la consulta necesita usar una unión izquierda con una tabla construida a partir del conjunto de valores. La unión izquierda devolverá todas las filas de la tabla construida junto con cualquier fila coincidente de la tabla original.
Aquí está la consulta para lograr esto:
Esto devolverá el resultado deseado:
La tabla construida
@values
contiene el conjunto de valores mencionados en la cláusula where. La unión izquierda con la tabla#Temp1
devuelve todas las filas de la tabla@values
junto con cualquier fila coincidente de la tabla#Temp1
basada en la columna ID.Dado que no hay ninguna fila en la tabla
#Temp1
con ID 12, la unión devuelve NULL para la columna Animal.