mysql union不同表,MySQL:在没有JOIN或UNION的情况下合并两个不同的表

I need to merge two tables:

Both have a primary key-column date, but with different values (different time intervals).

Both have different (unknown) columns: I don't know the names of the columns (same column-name may occur in both tables), I don't know how many columns, but all of the same type.

An example:

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

the result of the query should look like this:

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

This will not work:

INNER JOIN because it will only return the intersection between table1 and table2,

OUTER JOIN returns intersection + values only from left table (or right table if right join is used)

UNION because the count of columns may differ.

Any Ideas?

Christoph

解决方案

You can create a temp table with the union of just the date column, and then use the temp table to left outer join with the other 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);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值