как сделать специальное объединение в таблицах A и B (сохранить строку A и добавлять столбцы B только при совпадении один на один) - PullRequest
0 голосов
/ 12 июня 2019

Я хочу добавить в таблицу A информацию в таблице B только для строк таблицы A, у которых в таблице B совпадает одна и только одна строка.

Пример: таблица GIVEN A

+ lastName firstName
+ A        B
+ C        D
+ E        F

И таблица B

* lastName firstName age
* A        B         10
* C        D         15
* C        D         20

ХОЧУ ТАБЛИЦА РЕЗУЛЬТАТ

* lastName firstName age
* A        B         10
* C        D         null
* E        F         null

Возможно ли это сделать в SQL?левого соединения недостаточно

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

Вид

select A.lastName, A.firstName, u.age
from A
left join (
   select lastName, firstName, max(age) age
   from B
   group by lastName, firstName
   having count(*) = 1 -- or may be count(distinct age) = 1
) u on u.lastName = A.lastName and u.firstName = A.firstName
0 голосов
/ 12 июня 2019

Я думаю, что вы хотите добавить уникальные строки в B в A. Для этого я бы предложил UNION ALL:

select firstname, lastname, max(age) as age
from b
group by firstname, lastname
having count(*) = 1
union all
select firstname, lastname, null as age
from a
where not exists (select 1
                  from from b
                  group by firstname, lastname
                  having count(*) = 1
                 );

Это должно, по крайней мере, дать результаты в вашем вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...