En sql se pueden tomar dos conjuntos de datos y hacer operaciones de conjuntos como union, interseccion o resta, para ello se utiliza loq ue se conoce como operadores de conjunto y existen varios de ellos. Haremos una revision general.
Esete operador permite unir o sumar dos conjuntos de datos.
Sintaxis
SELECT campo from tabla
UNION
SELECT otrocampo from otratabla
Esta unión se puede hacer de dos tablas diferentes, con la única condición de que el número de campos y tipos de datos sean compatibles entre un SELECT y el otro.
En las operaciones de conjuntos equivale, el ejemplo anterior equivale a A ∪ B.
Sintaxis
select id from categorias c
union
select id from productos p
Además, se puede hacer una diferenciación entre UNION y un UNION ALL permitiendo o no duplicados que además influye en el tiempo o número de registros que regresa cada uno de ellos, pero en general se trata de la unión de conjuntos.
Toma dos consultas de entrada (mismo número de campos y tipos de datos compatibles) y genera una salida con los registros que están en ambas entradas.
En las operaciones de conjuntos tradicionales, la intersección de A y B se denota como A ∩ B y se codifica en términos generales como.
Sintaxis
SELECT campo from tabla
INTERSECT
SELECT otrocampo from otratabla
En mysql no se encuentra la instruccion except en algunos otros dbms se utiliza minus en mysql se suele usar para esta tarea NOT IN, NOT EXIST o inluso con un LEFT OUTER JOIN
Sintaxis
SELECT campo from tabla
WHERE campo IN
(SELECT otrocampo from otratabla)
Sintaxis
select id from tabla1
where id in (select id from tabla2)
Toma dos consultas y genera una salida con los registros que se encuentren en la primera pero que no se encuentren en la segunda.
Si UNION equivale a una suma de conjuntos, EXCEPT equivaldría a una resta en terminos generales se escribe como.
Sintaxis
SELECT campo from tabla
EXCEPT
SELECT otrocampo from otratabla
En mysql no se encuentra la instruccion except en algunos otros dbms se utiliza minus en mysql se suele usar para esta tarea NOT IN, NOT EXIST o inluso con un LEFT OUTER JOIN
Sintaxis
SELECT campo from tabla
WHERE campo NOT IN
(SELECT otrocampo from otratabla)