SQL

Cómo obtener las filas de una tabla que no están en otra tabla en SQL Server

Estrada Web Group
Administrador
Cómo obtener las filas de una tabla que no están en otra tabla en SQL Server

Cómo obtener las filas de una tabla que no están en otra tabla en SQL Server

Si estas escribiendo una consulta en SQL y quieres verificar que las filas que te regrese el query no existan en otra tabla, este articulo te servirá.

La base de datos que estoy usando es AdventureWork y es gratuita la puedes descargar aquí, en la consulta quiero encontrar todas las provincias que no tienen direcciones asignadas. Las tablas involucradas son:

  1. En Person.StateProvince, el campo StateProvinceId identifica de manera única a una provincia.
  2. En Person.Address, hay un campo StateProvinceId que enlaza la dirección con la Provincia.

Temas relacionados:

Una forma rápida de hacer la consulta SQL es:

SELECT s.*
  FROM Person.StateProvince s
  WHERE NOT EXISTS (SELECT * FROM Person.Address a 
WHERE s.StateProvinceId = a.StateProvinceId );

Esta consulta funciona bien, puede pensar que SQL Server ejecutará esa consulta SELECT * FROM Person.Address para cada fila de la tabla Person.StateProvince, pero es mucho más inteligente que eso, lo que lo hace más rápido. Escanea primero el índice Person.Address porque es mucho más grande y luego lo une a la tabla Person.StateProvince

Pero hay otra forma de escribir esa misma consulta:

SELECT s.*
  FROM Person.StateProvince s
  LEFT OUTER JOIN Person.Address a ON a.StateProvinceId = s.StateProvinceId
  WHERE a.AddressID IS NULL;

Esta consulta puede ser más difícil de entender la primera vez que la ves. Estoy uniendo a la tabla Person.Address, pero es una combinación opcional, y solo estoy quitando las filas donde la clave principal Person.Address (AddressID) es nulo. Eso significa, solo me regresara las filas de Person.StateProvince sin filas de Person.Address coincidentes.

  1. La tabla Person.StateProvince se procesa primero
  2. Hay un tipo diferente de unirse (todo lo de la izquierda)
  3. Hay un filtro después de la unión

La opción que utilices para realizar la consulta va a ser la manera más intuitiva y legible para ti y tus compañeros de trabajo. Si puedes entender lo que está pasando fácilmente, entonces el motor de SQL también lo hará.

¿Qué opción elegiste? envíame tus comentarios y sugerencias en el apartado de comentarios y en seguida te responderé. Saludos y comparte el articulo en tus redes sociales.

Compartir artículo:

Más artículos geniales

¿Cómo obtener el valor máximo en SQL Server con la función MAX()?

¿Cómo obtener el valor máximo en SQL Server con la función MAX()?

En este tutorial, aprenderás a usar la función MAX() de SQL Server para encontrar el valor máximo en un grupo de resultados.

Ver artículo completo
Cómo crear índices en SQL Server con la instrucción CREATE INDEX

Cómo crear índices en SQL Server con la instrucción CREATE INDEX

Resumen: en este tutorial, aprenderás a usar la instrucción CREATE INDEX de SQL Server para crear índices para tablas.

Ver artículo completo
¿Cómo se insertar en una tabla de SQL Server?

¿Cómo se insertar en una tabla de SQL Server?

En SQL, hay dos formas muy sencillas para INSERTAR datos en una tabla: Una es insertar una fila a la vez, y la otra es insertar filas múltiples o conjuntos de filas el cual explicaremos aquí también. Primero observemos como podemos INSERTAR datos a través de una fila a la vez:

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;