我需要合并两个表:
>两者都具有主键列日期,但是具有不同的值(不同的时间间隔).
>两者都有不同的(未知)列:我不知道列的名称(两个表中都可能出现相同的列名),我不知道有多少列,但所有列都是相同的类型.
一个例子:
table1
date | colA | colB | colC
2011-02-02 | 1.09 | 1.03 | 1.04
table2
date | col1 | col2 | col3 | col4
2011-02-03 | 1.03 | 1.02 | 1.07 | 1.03
查询的结果应如下所示:
tableResult
date | colA | colB | colC | col1 | col2 | col3 | col4
2011-02-02 | 1.09 | 1.03 | 1.04 | null | null | null | null
2011-02-03 | null | null | null | 1.03 | 1.02 | 1.07 | 1.03
这将不起作用:
> INNER JOIN,因为它只会返回table1和table2之间的交集,
> OUTER JOIN仅从左表(或使用右联接的右表)返回交集值
> UNION,因为列数可能不同.
有任何想法吗?
克里斯多夫
解决方法:
您可以使用仅date列的并集创建临时表,然后使用该临时表与其他2进行外部联接.
例:
DROP TABLE temptbl IF EXISTS;
CREATE TEMPORARY TABLE temptbl (myDate DATETIME PRIMARY KEY)
AS (SELECT MyDate FROM table1)
UNION (SELECT MyDate FROM table2)
ORDER BY MyDate;
SELECT * FROM temptbl
LEFT OUTER JOIN table1 USING (MyDate)
LEFT OUTER JOIN table2 USING (MyDate);
标签:join,union,mysql,merge
来源: https://codeday.me/bug/20191202/2086174.html