我想合并两个表,保留两个表中的所有行,就像同时进行左连接和右连接一样。
参见下面的示例。两个表都有“水果”列,我想列出两个表中水果的数量。同样,一种特定的水果可能出现在一张桌子上,而不是另一张桌子上。
有人能帮忙吗?谢谢。

TABLE1                    TABLE2
fruit, number             fruit, number
-------------             -------------
apples,  1                apples,   10
pears,   2                oranges,  30


MERGED TABLE (this is the result I'm after:
fruit, number_table1, number_table2
--------------------------------------
apples,     1,      10
pears,      2,      -
oranges,    -,      30

下面是创建表的代码,如果您需要尝试的话。。。。
CREATE TABLE table1 (fruit CHAR(10) NOT NULL, number INT(10) NOT NULL);
CREATE TABLE table2 (fruit CHAR(10) NOT NULL, number INT(10) NOT NULL);
insert into table1 (fruit, number) values ('apples', 1), ('pears', 2);
insert into table2 (fruit, number) values ('apples', 10), ('oranges', 30);

最佳答案

以下是使用UNION的解决方案:

(select table1.fruit fruit, table1.number number1, table2.number number2 from table1 left join table2 using (fruit)) union (select table2.fruit fruit, table1.number number1, table2.number number2 from table2 left join table1 using (fruit));

关于mysql - MySQL-合并2个保留所有行的表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4962537/

10-15 22:49