OpenSearch admite cuatro tipos de operaciones JOIN: left join, inner join, semi join y anti join.
Left outer join
Un left join devuelve todos los registros de la tabla izquierda, incluso si no hay registros coincidentes en la tabla derecha.
SELECT
t1.id, t2.id
FROM
tj_shop AS t1
LEFT JOIN
tj_item AS t2
ON
t1.id = t2.id
Si los valores de la tabla derecha no son únicos, evite usar demasiadas operaciones left join consecutivas para prevenir la expansión excesiva de datos durante el procedimiento de JOIN.
Inner join
Un inner join devuelve las filas que cumplen la condición ON. La palabra clave
inneres opcional.
SELECT
t1.id, t2.id
FROM
tj_shop AS t1
JOIN
tj_item AS t2
ON
t1.id = t2.id
Si la condición ON siempre es TRUE, la operación devuelve el producto cartesiano de ambas tablas. Las dos sentencias SQL a continuación son equivalentes.
SELECT
t1.id, t2.id
FROM
tj_shop AS t1
JOIN
tj_item AS t2
ON
TRUE
SELECT
t1.id, t2.id
FROM
tj_shop, tj_item;
Semi join
En un semi join, la tabla derecha solo se usa para filtrar datos de la tabla izquierda y no aparece en el conjunto de resultados.
Cuando se cumple la condición de
join, la operación devuelve datos de la tabla izquierda. Se devuelve una fila de la tablatj_shopsi suidexiste en la tablatj_item.
SELECT
id
FROM
tj_shop
WHERE id IN (
SELECT
id
FROM
tj_item
)
SELECT
id
FROM
tj_shop
WHERE EXISTS (
SELECT
id
FROM
tj_item
WHERE
tj_shop.id = id
)
Anti join
En un anti join, la tabla derecha solo se usa para filtrar datos de la tabla izquierda y no aparece en el conjunto de resultados.
Cuando no se cumple la condición de
join, la operación devuelve datos de la tabla izquierda. Se devuelve una fila de la tablatj_shopsi suidno existe en la tablatj_item.
SELECT
id
FROM
tj_shop
WHERE id NOT IN (
SELECT
id
FROM
tj_item
)
SELECT
id
FROM
tj_shop
WHERE NOT EXISTS (
SELECT
id
FROM
tj_item
WHERE
tj_shop.id = id
)