joins - MySQL: FULL OUTER JOIN-¿Cómo fusiono una columna?
union mysql (3)
Utilizar:
SELECT t1.id,
t1.value,
t2.value2
FROM table1 t1
LEFT JOIN table2 t2 ON t2.id = t1.id
UNION
SELECT t2.id,
t1.value,
t2.value2
FROM TABLE1 t1
RIGHT JOIN TABLE2 t2 ON t2.id = t1.id
El operador UNION
elimina los duplicados de filas / registros, por lo que debe definir / listar las columnas de manera adecuada.
Guiones:
DROP TABLE IF EXISTS `example`.`table1`;
CREATE TABLE `example`.`table1` (
`id` int(10) unsigned NOT NULL default ''0'',
`value` varchar(45) NOT NULL default ''''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO table1 VALUES (1, ''a''), (2, ''c''), (3, ''e'');
DROP TABLE IF EXISTS `example`.`table2`;
CREATE TABLE `example`.`table2` (
`id` int(10) unsigned NOT NULL default ''0'',
`value2` varchar(45) NOT NULL default ''''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO table2 VALUES (1, ''b''), (3, ''d''), (4, ''f'');
Edición: línea fija arriba
Queridos todos,
En primer lugar, me gustaría agradecer a las personas que responden preguntas en esta página por el excelente trabajo que están haciendo aquí. No tengo mucha experiencia en programación y esta página ha sido de gran ayuda para mí.
Ahora vengo a mi pregunta específica con respecto a una JUNTA EXTERNA COMPLETA en MySQL. Tengo dos (o más mesas):
table1 table2 id value id value2 1 a 1 b 2 c 3 d 3 e 4 f
He usado esta consulta para obtener mi unión:
SELECT *
FROM table1
LEFT OUTER JOIN table2
ON table1.`id`=table2.`id`
UNION
SELECT *
FROM table1
RIGHT OUTER JOIN table2
ON table1.`id`=table2.`id`
Llegar:
id value1 id value2 1 a 1 b 2 c NULL NULL 3 e 3 d NULL NULL 4 f
Mi problema es que no logro colapsar simultáneamente las dos columnas de ID en una columna para obtener esto:
id value1 value2 1 a b 2 c NULL 3 e d 4 NULL f
¿Alguna sugerencia sobre cómo hacerlo?
Por lo que creo que estás tratando de hacer, te sugeriría que utilices una COMPLECIÓN EXTERNA COMPLETA en su lugar:
SELECT ISNULL(t1.id, t2.id) AS id, t1.value1, t2.value2
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.id = t2.id
SELECT
COALESCE(t1.id, t2.id) as id,
t1.value1,
t2.value2
FROM table1 t1
FULL JOIN table2 t2 ON t1.id = t2.id;