【问题标题】:insert from table1 into table2 where time difference in value input on table 1 is greater than 5 minute从表 1 插入表 2,其中表 1 上的值输入的时间差大于 5 分钟
【发布时间】:2019-04-16 14:22:18
【问题描述】:

编辑:我可能应该说我试图输入信标数据,其中同一信标的下一个数据输入大于 5 分钟

我有问题将表 1 中的值插入到表 2 中,其中信标匹配的表 1 上的数据输入之间存在较大的时间输入差异。

例如ID 7 和 ID 8 之间的数据输入间隙大于 5 分钟,但下面使用的查询我没有返回任何数据

INSERT INTO table
(`beacon`, `zone`, `mac`, `date`, `time`, `id`)

VALUES
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:21:33","1"),
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:21:43","2"),
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:21:53","3"),
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:22:03","4"),
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:22:13","5"),
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:22:32","6"),
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:22:33","7"),
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:30:00","8"),
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:30:33","9"),
("8","GREEN","EE6A6AF29B8E","2018-11-13","16:30:35","10");

返回任何结果的查询我不确定我是否遗漏了一点或只是写错了

select a.beacon, a.zone, a.mac, a.date from table a
join table b
on b.id = (select min(id) from table where id > a.id)
where TIME_TO_SEC(TIMEDIFF(a.time, b.time)) > 300;

我试图将数据从 1 个 mysql 插入到另一个表中,其中表 1 上的数据输入和信标匹配的数据输入到 database.table1 之间的时间大于 5 分钟

例如

"8","GREEN","EE6A6AF29B8E","2018-11-13","16:21:33","1"),
"8","GREEN","EE6A6AF29B8E","2018-11-13","16:22:33","1"),
"8","GREEN","EE6A6AF29B8E","2018-11-13","16:23:33","1"), (Ref 1)
value 8 stopped being inputted into database
"10","GREEN","EE6A6AF29B8E","2018-11-13","16:21:33","1"), 
"10","GREEN","EE6A6AF29B8E","2018-11-13","16:22:33","1"),
"10","GREEN","EE6A6AF29B8E","2018-11-13","16:25:33","1"),
value 8 started inputting into database
"8","GREEN","EE6A6AF29B8E","2018-11-13","16:28:33","1"), (Ref 2)
"8","GREEN","EE6A6AF29B8E","2018-11-13","16:28:33","1"),

REF 1 和 REF 2 之间的差异是 5 分钟,因此将值 8 插入数据库

仅比较信标相同的数据(信标为第一列)

因此,即使在参考 2 之前不到 5 分钟有数据输入,因为信标与参考 2 不同,它也不会考虑此字符串。

【问题讨论】:

标签: mysql


【解决方案1】:

你能把你的查询模仿成这个并检查一下吗?

select a.beacon, a.zone, a.mac, a.date from table a
join table b on b.id<a.id
and TIME_TO_SEC(TIMEDIFF(a.time, b.time)) >300; 

基本上你需要那些小于表a的行和满足条件的行。

【讨论】:

  • 如果我这样做,它会返回数据,但 b.id 不需要大于 a.id
猜你喜欢
  • 2020-03-28
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2014-01-05
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多