Как объединить две таблицы в одном столбце, сохранив значения в другом столбце? - PullRequest
0 голосов
/ 07 марта 2020

У меня есть две таблицы.

links_table

URL                     Links
example.com/1           6
example.com/2           2
example.com/3           4

pages_table

URL
example.com/2
example.com/4

Как объединить все URL-адреса таким образом, чтобы сохранить количество ссылок?

Желаемый результат:

URL                     Links
example.com/1           6
example.com/2           2
example.com/3           4
example.com/4           null

Ответы [ 3 ]

1 голос
/ 07 марта 2020

В MySQL вы можете эмулировать full join с UNION ALL и агрегацией:

select url, max(links) links
from (
    select url, links from links_table
    union all
    select url, null from pages_table
) t
group by url
1 голос
/ 07 марта 2020

Похоже, вы хотите вернуть все строки в links_table плюс дополнительные строки в pages_table, которых нет в этой таблице. Я бы просто использовал union all:

select l.url, l.links
from links_table l
union all
select p.url, null
from pages_table p
where not exists (select 1 from links_table where l.url = p.url);
0 голосов
/ 07 марта 2020

примерно так: (хотя не уверен на 100%)

SELECT * 
FROM links_table l 
LEFT OUTER JOIN pages_table p ON p.url = l.url 
UNION 
SELECT * 
FROM links_table l 
RIGHT OUTER JOIN pages_table p ON p.url = l.url 
WHERE l.url IS NULL; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...