我需要合并两个表:
- 两者都有一个主键列日期,但具有不同的值(不同的时间间隔)。
- 两者都有不同的(未知)列:我不知道列的名称(两个表中可能出现相同的列名),我不知道有多少列,但都是相同的类型。
一个例子:
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
and table2
,
-
OUTER JOIN
仅从左表返回交集 + 值(如果使用右连接,则返回右表)
-
UNION
因为列数可能不同。
有任何想法吗?
克里斯托夫
您可以创建一个仅包含日期列的临时表,然后使用该临时表与其他 2 个列进行左外连接。
Example:
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)