PostgreSQL – Operador EXCEPTO

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *