如何在一列上连接两个表,同时保留另一列中的值?
How do I join two tables on one column while preserving the values in another column?
我有两张桌子。
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
像这样:(虽然不是 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;
在 MySQL 中,您可以使用 UNION ALL
和聚合模拟 full join
:
select url, max(links) links
from (
select url, links from links_table
union all
select url, null from pages_table
) t
group by url
您似乎想要 return links_table
中的所有行加上 pages_table
中不在 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);
我有两张桌子。
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
像这样:(虽然不是 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;
在 MySQL 中,您可以使用 UNION ALL
和聚合模拟 full join
:
select url, max(links) links
from (
select url, links from links_table
union all
select url, null from pages_table
) t
group by url
您似乎想要 return links_table
中的所有行加上 pages_table
中不在 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);