En PostgreSQL , el operador EXCEPT se usa para devolver filas distintas de la primera consulta (izquierda) que no están en el resultado de la segunda consulta (derecha) al comparar conjuntos de resultados de dos o más consultas.
Syntax: SELECT column_list FROM A WHERE condition_a EXCEPT SELECT column_list FROM B WHERE condition_b;
Se deben obedecer las siguientes reglas al usar el operador EXCEPT:
- El número de columnas y su orden debe ser el mismo en las dos consultas.
- Los tipos de datos de las respectivas columnas deben ser compatibles.
El siguiente diagrama de Venn ilustra el resultado del operador EXCEPTO:
Por el bien de este artículo, utilizaremos la base de datos de alquiler de DVD de muestra , que se explica aquí y se puede descargar haciendo clic en este enlace en nuestros ejemplos.
Ejemplo 1:
aquí buscaremos películas que no están en el inventario usando el operador EXCEPT de los datos de las tablas «película» e «inventario» de nuestra base de datos de muestra y las ordenaremos usando la cláusula ORDER BY según el título de la película.
SELECT film_id, title FROM film EXCEPT SELECT DISTINCT inventory.film_id, title FROM inventory INNER JOIN film ON film.film_id = inventory.film_id ORDER BY title;
Producción:
Ejemplo 2:
aquí buscaremos películas que solo están en idioma inglés (es decir, language_id = 1) usando el operador EXCEPT de los datos de las tablas «película» e «idioma» de nuestra base de datos de muestra y las ordenaremos usando la cláusula ORDER BY basado en el título de la película.
SELECT language_id, title FROM film WHERE language_id = 1 EXCEPT SELECT DISTINCT language.language_id, name FROM language INNER JOIN film ON film.language_id = language.language_id ORDER BY title;;
Producción:
Publicación traducida automáticamente
Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA