Pregunta
Supongamos que tenemos una tabla:
itemid mark
1 5
2 3
y en la tabla B:
itemid mark
1 3
3 5
Quiero unirme a*B en A. itemid=B. itemid la derecha y la izquierda maneras.es decir,resultado:
itemid A.mark B.mark
1 5 3
2 3 NULL
3 NULL 5
Es allí una manera de hacerlo en una consulta en MySQL?
Solución
Se llama una combinación externa completa y no admite de forma nativa en MySQL, a juzgar por su docs.Usted puede evitar esta limitación mediante la UNIÓN tal como se describe en los comentarios a la página que he enlazado.
[editar] Desde otros publicado fragmentos, aquí la tiene.Usted puede ver explicación en la página vinculada.
SELECT *
FROM A LEFT JOIN B ON A.id = B.id
UNION ALL
SELECT *
FROM A RIGHT JOIN B ON A.id = B.id
WHERE A.id IS NULL
Otros consejos
Podría hacer con un poco de trabajo, pero aquí es algunas sql
select distinct T.itemid, A.mark as "A.mark", B.mark as "B.mark"
from (select * from A union select * from B) T
left join A on T.itemid = A.itemid
left join B on T.itemid = B.itemid;
Esto se basa en el left join, que devuelve todas las filas de la tabla original (en este caso es la subselección la tabla T).Si no hay coincidencias en la tabla combinada, entonces será el conjunto de la columna a NULL.
Esto funciona para mí en SQL Server:
select isnull(a.id, b.id), a.mark, b.mark
from a
full outer join b on b.id = a.id