gpt4 book ai didi

mysql - SQL用MYSQL连接来自多个表的数据

转载 作者:搜寻专家 更新时间:2023-10-30 22:33:17 25 4
gpt4 key购买 nike

我有多个表和列字段,它们都匹配数据类型和列号,并且都有一个时间字段也匹配 YYYY-MM-DD HH:MM:SS 贯穿所有。

数据问题

我可能有一些表,其中日期和时间戳与该表的值列中的匹配值,但在另一个表中,它不会有相同的日期和时间戳,因为每个表只记录一个时间生成其他字段的值。

我的困境

我需要连接所有这些表(大约 20 个),以便它们的时间和值字段与每个表中的每个值一起显示,每个值都有一个单独的名称。

我还需要显示每个条目的时间,但我只需要为所有条目设置一个时间字段,如果该时间不存在于那些表中,则其他值为 Null。


示例表

表 A

+---------------------+-------+
| Time | Value |
+---------------------+-------+
| 2016-12-11 00:00:15 | 15 |
| 2016-12-11 00:10:10 | 16 |
| 2016-12-11 00:12:00 | 17 |
+---------------------+-------+

表 B

+---------------------+-------+
| Time | Value |
+---------------------+-------+
| 2016-12-11 00:01:15 | 25 |
| 2016-12-11 00:11:10 | 26 |
| 2016-12-11 00:11:00 | 27 |
+---------------------+-------+

TableC

+---------------------+-------+
| Time | Value |
+---------------------+-------+
| 2016-12-11 00:02:15 | 35 |
| 2016-12-11 00:20:10 | 36 |
| 2016-12-11 00:21:00 | 37 |
+---------------------+-------+

预期结果

+---------------------+-----------+-----------+-----------+
| Time | Value_tba | Value_tbb | Value_tbc |
+---------------------+-----------+-----------+-----------+
| 2016-12-11 00:00:15 | 15 | Null | Null |
| 2016-12-11 00:10:10 | 16 | Null | Null |
| 2016-12-11 00:12:00 | 17 | Null | Null |
| 2016-12-11 00:01:15 | Null | 25 | Null |
| 2016-12-11 00:11:10 | Null | 26 | Null |
| 2016-12-11 00:11:00 | Null | 27 | Null |
| 2016-12-11 00:02:15 | Null | Null | 35 |
| 2016-12-11 00:20:10 | Null | Null | 36 |
| 2016-12-11 00:21:00 | Null | Null | 37 |
+---------------------+-----------+-----------+-----------+

我的两张表解决方案

如果我使用 MYSQL 是唯一或最简单的方法,使用左连接然后使用 UNION 或 UNION ALL 来填充它,正如我所期望的那样,或者这甚至可以使用 SQL 语句来获得它结果?下面是我对两个表使用的示例,但是当我需要在循环中添加其他表时,我没有得到预期的结果。

这是我在两个表中使用的内容,这似乎可以满足我的需要,但是当我需要将其他表添加到组合中时,这就是我感到困惑的地方,无法将所有内容都放入同一个选择中LEFT JOIN 或者如果我需要单独填充它们然后 UNION ALL。

SELECT a.Time, a.Value Value_tba, b.value Value_tbb
FROM TableA a
LEFT JOIN TableB b ON b.Time=a.Time

UNION ALL

SELECT b.Time, a.Value Value_tba, b.value Value_tbb
FROM TableB b
LEFT JOIN TableA a ON a.Time=b.Time

最佳答案

尝试以下操作:

select x.time, a.value as value_tba, b.value as value_tbb, c.value as value_tbc from (select time from a union select time from b union select time from c) x left join a on x.time = a.time left join b on x.time = b.time left join c on x.time = c.time

关于mysql - SQL用MYSQL连接来自多个表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41090783/

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