gpt4 book ai didi

mysql - 如何按时间顺序从两个或多个表中进行选择?

转载 作者:行者123 更新时间:2023-11-29 16:03:53 25 4
gpt4 key购买 nike

我试图从两个大日志表中一起选择,并获得所有事件的时间顺序结果。

假设我有:

Table: MyDb.Building_A
+---------------------+--------------+
| DateTime | Employee | (some other columns)
+---------------------+--------------+
| 2019-01-01 08:00:00 | Bob |
(... millions more rows)

And then another table: MyDb.Building_B
+---------------------+--------------+
| DateTime | Employee | (some other columns)
+---------------------+--------------+
| 2019-01-01 08:10:00 | Bob |
| 2019-01-01 08:20:00 | Peter |
(... many millions more rows)

现在我的老板想查看一段时间内所有建筑物的所有访问日志(分页数据):

我需要将数据像 zipper 一样组合在一起:

+---------------------+--------------+
| 2019-01-01 08:00:00 | Bob |
| 2019-01-01 08:10:00 | Bob |
| 2019-01-01 08:20:00 | Peter |

我能想到的最好办法是从两个表中单独选择一个数组(按日期时间排序),使用两组数据对数组进行排序(使用多维数组排序),然后将数组修剪为单个数组页的数据量。 (一想到这个我就累了!)

这里效率很低...有更好的方法吗?(使用MySQL)

最佳答案

您可以只使用 UNION 查询(在本例中,获取今年的所有访问):

(SELECT `DateTime`, Employee 
FROM MyDb.Building_A
WHERE `DateTime` BETWEEN '2019-01-01' AND '2019-12-31')
UNION
(SELECT `DateTime`, Employee
FROM MyDb.Building_B
WHERE `DateTime` BETWEEN '2019-01-01' AND '2019-12-31')
ORDER BY `DateTime`

UNION 将从每个表中获取满足 DateTime 标准的所有行,ORDER BY 将对所有行进行排序DateTime,根据需要混合构建 A 和 B。

注意我假设您的 DateTime 列是 MySQL DateDateTime 数据类型。如果不是,您可能需要使用 STR_TO_DATE 进行转换,以使 BETWEEN 逻辑正常工作。

关于mysql - 如何按时间顺序从两个或多个表中进行选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55920667/

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