mysql - SQL查询合并两个具有不同时间戳的表作为索引

标签 mysql sql put

我不确定我的问题是否适用于 sql 查询。

我有以下两个 Mysql 表:

表一: 该表每 20 秒获取一个新值

a.Time                  a.Value
2015-05-14 07:36:36     49
2015-05-14 07:36:56     49
2015-05-14 07:37:16     49
2015-05-14 07:37:36     49
2015-05-14 07:37:56     50
2015-05-14 07:38:16     50
2015-05-14 07:38:36     50
2015-05-14 07:38:56     49
2015-05-14 07:39:16     49
2015-05-14 07:39:36     49
2015-05-14 07:39:56     49
2015-05-14 07:40:16     50
2015-05-14 07:40:36     50
2015-05-14 07:40:56     50
2015-05-14 07:41:16     49
2015-05-14 07:41:36     49
2015-05-14 07:41:56     50
2015-05-14 07:42:16     50
2015-05-14 07:42:36     49
2015-05-14 07:42:56     49
2015-05-14 07:43:16     49
2015-05-14 07:43:36     49
2015-05-14 07:43:56     49
2015-05-14 07:44:06     49

表b 该表获取值的每个变化一条新记录

b.Time              b.Value
2015-05-14 07:34:50     1500
2015-05-14 07:38:52     2000
2015-05-14 07:40:52     0
2015-05-14 07:42:31     1500

结果应该如下所示

a.Time                  a.Value     b.Time              b.Value
2015-05-14 07:36:36     49         2015-05-14 07:34:50  1500
2015-05-14 07:36:56     49         2015-05-14 07:34:50  1500
2015-05-14 07:37:16     49         2015-05-14 07:34:50  1500
2015-05-14 07:37:36     49         2015-05-14 07:34:50  1500
2015-05-14 07:37:56     50         2015-05-14 07:34:50  1500
2015-05-14 07:38:16     50         2015-05-14 07:34:50  1500
2015-05-14 07:38:36     50         2015-05-14 07:34:50  1500
2015-05-14 07:38:56     49         2015-05-14 07:38:52  2000
2015-05-14 07:39:16     49         2015-05-14 07:38:52  2000
2015-05-14 07:39:36     49         2015-05-14 07:38:52  2000
2015-05-14 07:39:56     49         2015-05-14 07:38:52  2000
2015-05-14 07:40:16     50         2015-05-14 07:38:52  2000
2015-05-14 07:40:36     50         2015-05-14 07:38:52  2000
2015-05-14 07:40:56     50         2015-05-14 07:40:52  0
2015-05-14 07:41:16     49         2015-05-14 07:40:52  0
2015-05-14 07:41:36     49         2015-05-14 07:40:52  0
2015-05-14 07:41:56     50         2015-05-14 07:40:52  0
2015-05-14 07:42:16     50         2015-05-14 07:40:52  0
2015-05-14 07:42:36     49         2015-05-14 07:42:31  1500
2015-05-14 07:42:56     49         2015-05-14 07:42:31  1500
2015-05-14 07:43:16     49         2015-05-14 07:42:31  1500
2015-05-14 07:43:36     49         2015-05-14 07:42:31  1500
2015-05-14 07:43:56     49         2015-05-14 07:42:31  1500
2015-05-14 07:44:06     49         2015-05-14 07:42:31  1500

表a中的时间戳应该是表b中的下一个更小的时间戳!

知道查询应该是什么样子吗?

非常感谢!

最佳答案

使用按 TIMELIMIT 1 排序的子查询从 B 获取一条时间小于当前 A 的顶级记录。时间:

SELECT 
a.Time,
a.Value,
(SELECT Time FROM B WHERE B.Time<=A.Time ORDER BY B.Time DESC LIMIT 1) 
     as B_Time,
(SELECT Value FROM B WHERE B.Time<=A.Time ORDER BY B.Time DESC LIMIT 1)  
     as B_Value
FROM A
ORDER BY A.Time

关于mysql - SQL查询合并两个具有不同时间戳的表作为索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30230632/

相关文章:

MySQL LIKE 语句将 "o"和 "ö"解释为相同

rest - 无法在GROOVY脚本中使用CURL进行REST PUT调用

SQL 服务器 2012 : DATETIME discrepancies between inserts and triggers

php - 访问来自 PHP/JQuery.ajax 的传入 PUT 数据以及如何处理它?

symfony - FosRestBundle post/put [创建新/更新实体] 未正确读取请求

mysql - 在 Rails 应用程序的 MySQL 数据库中使用 TimeZone 正确存储日期

php - 多行验证

mysql - 如何计算 MySQL 中(某个值)的子项数量?

php - 如何使用 Adodb 库 PHP 查找 UPDATE 查询中受影响的行?

mysql - SQL 选择每天最早开始日期时间和最晚结束日期时间