Resumen :en este tutorial, aprenderá cómo emular la unión externa completa de SQLite usando UNION
y LEFT JOIN
cláusulas.
Introducción a SQL FULL OUTER JOIN
cláusula
En teoría, el resultado de FULL OUTER JOIN
es una combinación de LEFT JOIN
y un RIGHT JOIN
. El conjunto de resultados de la unión externa completa tiene NULL
valores para cada columna de la tabla que no tiene una fila coincidente en la otra tabla. Para las filas coincidentes, FULL OUTER JOIN
produce una sola fila con valores de las columnas de las filas en ambas tablas.
La siguiente imagen ilustra el resultado de FULL OUTER JOIN
cláusula:

Ver los siguientes cats
y dogs
mesas.
-- create and insert data into the dogs table
CREATE TABLE dogs (
type TEXT,
color TEXT
);
INSERT INTO dogs(type, color)
VALUES('Hunting','Black'), ('Guard','Brown');
-- create and insert data into the cats table
CREATE TABLE cats (
type TEXT,
color TEXT
);
INSERT INTO cats(type,color)
VALUES('Indoor','White'),
('Outdoor','Black');
Code language: SQL (Structured Query Language) (sql)
La siguiente instrucción utiliza FULL OUTER JOIN
cláusula para consultar datos de los dogs
y cats
mesas.
SELECT *
FROM dogs
FULL OUTER JOIN cats
ON dogs.color = cats.color;
Code language: SQL (Structured Query Language) (sql)
A continuación se muestra el resultado de la afirmación anterior:
Tipo | Color | Tipo | Color |
---|---|---|---|
Caza | Negro | Al aire libre | Negro |
Guardia | Marrón | NULO | NULO |
NULO | NULO | Interior | Blanco |
Desafortunadamente, SQLite no es compatible con RIGHT JOIN
y también la cláusula FULL OUTER JOIN
cláusula. Sin embargo, puede emular fácilmente el FULL OUTER JOIN
usando el LEFT JOIN
cláusula.
Emular la combinación externa completa de SQLite
La siguiente declaración emula el FULL OUTER JOIN
cláusula en SQLite:
SELECT d.type,
d.color,
c.type,
c.color
FROM dogs d
LEFT JOIN cats c USING(color)
UNION ALL
SELECT d.type,
d.color,
c.type,
c.color
FROM cats c
LEFT JOIN dogs d USING(color)
WHERE d.color IS NULL;
Code language: SQL (Structured Query Language) (sql)
Cómo funciona la consulta.
- Porque SQLilte no es compatible con
RIGHT JOIN
cláusula, usamos laLEFT JOIN
cláusula en el segundoSELECT
declaración en su lugar y cambiar las posiciones de loscats
ydogs
mesas. - La
UNION ALL
cláusula conserva las filas duplicadas de los conjuntos de resultados de ambas consultas. - El
WHERE
cláusula en el segundoSELECT
declaración elimina filas que ya están incluidas en el conjunto de resultados del primerSELECT
declaración.
En este tutorial, ha aprendido a usar UNION ALL
y LEFT JOIN
cláusulas para emular SQLite FULL OUTER JOIN
cláusula.