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?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top