如何在MySQL中组合两个只有一个公共列和其他列的表是不同的?

时间:2015-02-09 04:56:07

标签: mysql

我有两张桌子,

表1:

 Date  | Amt | Name
====================
2/5/15 | 100 | abc
--------------------
3/5/15 | 150 | xyz
--------------------
3/5/15 | 170 | pqr
--------------------
5/5/15 | 190 | zzz
--------------------

表2:

 Date  | Amt1 | Name1
====================
2/5/15 | 130 | www
--------------------
3/5/15 | 110 | eee
--------------------
5/5/15 | 180 | rrr
--------------------

我的输出应该是:

 Date  | Amt | Name | amt1 | Name1
=====================================
2/5/15 | 100 | abc  | 130  | www
-------------------------------------
3/5/15 | 150 | xyz  | 110  | eee
-------------------------------------
3/5/15 | 170 | pqr  |   -  | -  
-------------------------------------
4/5/15 | 190 | zzz  |   -  | -
-------------------------------------
5/5/15 | -   | -    | 180  | rrr
-------------------------------------

这里Date是常用字段,那么如何使用MySQL查询来实现这一点呢? 我听说过FULL OUTER JOIN ....但是它是如何在MySQL中实现的?

3 个答案:

答案 0 :(得分:2)

执行LEFT JOINRIGHT JOIN,然后使用UNION ALL合并它们。请参阅下面的查询:

SELECT A.Date,Amt,Name,Amt1,Name1 FROM Table1 A LEFT JOIN Table2 B ON A.Date=B.Date
UNION ALL
SELECT B.Date,Amt,Name,Amt1,Name1 FROM Table1 A RIGHT JOIN Table2 B ON A.Date=B.Date

答案 1 :(得分:0)

您可以使用JOIN组合两个表来获得此结果

试试这个

SELECT *
FROM table1 
FULL OUTER JOIN table2
ON table1.Date=table2.Date;

答案 2 :(得分:0)

使用外部联接可以适用于您的情况:

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;