sql объединить две таблицы - PullRequest
       4

sql объединить две таблицы

9 голосов
/ 07 февраля 2012
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

Может кто-нибудь показать мне, как написать запрос и получить результат, как указано выше, Большое спасибо!Я пытался присоединиться, левый и правый присоединиться.все результат ничего.

Ответы [ 5 ]

17 голосов
/ 07 февраля 2012

Вы можете написать левое внешнее соединение между этими двумя таблицами. Лучший способ понять это - проверить изображение ниже

Запрос по вашему требованию

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

Чтение этой оригинальной статьи на Проект кода вам очень поможет: Визуальное представление объединений SQL .

alt text

Найти оригинал можно по адресу: Разница между JOIN и OUTER JOIN в MySQL .

2 голосов
/ 07 февраля 2012
SELECT A.uid, A.name, B.address FROM A LEFT OUTER JOIN B ON A.uid = B.uid
1 голос
/ 07 февраля 2012

Полагаю, вы после пустого значения, если для B нет значения, которое имеет тот же uid в A.

Если это так, IFNULL вернет значение по умолчанию, указанное вами весли параметр имеет значение null (ISNULL используется в MSSQL):

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

Это приведет к чему-то вроде:

test1   address1
test2   address2
test3   
test4   address3
1 голос
/ 07 февраля 2012

Вы можете использовать любое объединение. Я пишу этот запрос для полного объединения.

select A.uid,A.name,B.address from A FULL JOIN B ON A.uid = B.uid
1 голос
/ 07 февраля 2012

Вы говорите, что пробовали левое соединение, но не давали никаких попыток - одна из первых логических попыток была бы:

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

Эй, Presto!это дает вам то, что вы были после.

...