2012-02-07 11 views
8
TABLE A >> 
uid name 
1 test1 
2 test2 
3 test3 
4 test4 

TABLE B >> 
uid address 
1 address1 
2 address2 
4 address3 

RESULT 
1 test1 address1 
2 test2 address2 
3 test3 
4 test4 address3 

¿Alguien me puede mostrar cómo escribir una consulta y obtener el resultado como se muestra arriba, muchas gracias! He intentado unirse, izquierda y derecha unirse. todo no da resultadosql join two table

+0

W ¿Qué intentaste con tus uniones? Es decir, los intentos? –

Respuesta

15

Puede escribir externa izquierda entre esta dos mesas mejor manera de entender se compruebe la imagen de abajo

de consulta para su requerimiento

SELECT A.uid, A.name, B.address FROM A LEFT JOIN B ON A.uid=B.uid 

lectura de este artículo original en El Proyecto Código ayudará usted mucho: Visual Representation of SQL Joins.

alt text

Encuentra un original en: Difference between JOIN and OUTER JOIN in MySQL.

+0

Esos son diagramas de operaciones de conjunto, no de uniones, p. la que queda abajo es 'A UNION B', la del medio es' A INTERSECT B', etc. – onedaywhen

+0

Me encanta tu diagrama, explica todo muy bien. Gracias muy mcuh – Bruce

1

Usted dice que trató a la izquierda entrar, pero no se dio por cualquier intento --- uno de los primeros intentos lógico hubiera sido:

SELECT A.uid, A.name, B.address 
FROM A 
LEFT JOIN B ON A.uid=B.uid 

¡listo! te da lo que estabas buscando.

2
SELECT A.uid, A.name, B.address FROM A LEFT OUTER JOIN B ON A.uid = B.uid 
1

Puede usar cualquier combinación.Escozco esta consulta para la unión completa.

select A.uid,A.name,B.address from A FULL JOIN B ON A.uid = B.uid 
1

supongo que lo que busca es un valor vacío si no hay ningún valor de B, es decir que tiene el mismo UID en A.

Si este es el caso, IFNULL devolverá el valor predeterminado que especificada en caso de que el parámetro es null (ISNULL se utiliza en MSSQL):

SELECT A.value, IFNULL(B.value, '') 
FROM A LEFT JOIN B 
ON A.uid = B.uid 

Esto producirá algo como:

test1 address1 
test2 address2 
test3 
test4 address3