gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:21:19 29 4
gpt4 key购买 nike

我需要合并两个表:

  • 两者都有一个主键列日期,但具有不同的值(不同的时间间隔)。
  • 两者都有不同的(未知)列:我不知道列的名称(两个表中可能出现相同的列名),我不知道有多少列,但都是相同的类型。

一个例子:

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 因为它只会返回 table1table2 之间的交集,
  • OUTER JOIN 仅从左表(或右表,如果使用右连接)返回交集 + 值
  • UNION 因为列数可能不同。

有什么想法吗?

克里斯托夫

最佳答案

您可以创建一个仅包含日期列的并集的临时表,然后使用该临时表与其他 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);

关于MySQL:在没有 JOIN 或 UNION 的情况下合并两个不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8008765/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com