mysql merge union_MySQL:不使用JOIN或UNION合并两个不同的表

我需要合并两个表:

>两者都具有主键列日期,但是具有不同的值(不同的时间间隔).

>两者都有不同的(未知)列:我不知道列的名称(两个表中都可能出现相同的列名),我不知道有多少列,但所有列都是相同的类型.

一个例子:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值