【问题标题】:Select rows with same values and time interval MySQL选择具有相同值和时间间隔 MySQL 的行
【发布时间】:2021-02-21 19:53:37
【问题描述】:

我在 MySQL 的数据库中有一张大表。这只是一个限制 15 的提取。

| name                 | etiqueta10      | msgtimestamp            | unixtime   |
+----------------------+-----------------+-------------------------+------------+
| SERTAN BOUEE         | 8a184cc44697fff | 2019-12-11 10:59:32.214 | 1576058372 |
| LONGLINE BUOY 06 89% | 8a3f664f6a47fff | 2019-12-11 02:29:54.387 | 1576027794 |
| LONGLINE BUOY 06 89% | 8a3f6641a08ffff | 2019-12-11 10:34:38.622 | 1576056878 |
| LONGLINE BUOY 06 89% | 8a3f664f6b07fff | 2019-12-11 03:26:43.41  | 1576031203 |
| LONGLINE BUOY 06 89% | 8a3f664f0c17fff | 2019-12-11 01:42:49.941 | 1576024969 |
| LONGLINE BUOY 06 89% | 8a3f664f6a77fff | 2019-12-11 02:35:26.123 | 1576028126 |
| LONGLINE BUOY 06 89% | 8a3f664f6b0ffff | 2019-12-11 03:10:00.187 | 1576030200 |
| LONGLINE BUOY 06 89% | 8a3f664f6a5ffff | 2019-12-11 05:50:06.411 | 1576039806 |
| LONGLINE BUOY 06 89% | 8a3f664f6a5ffff | 2019-12-11 04:18:54.378 | 1576027134 |
| LONGLINE BUOY 06 89% | 8a3f664f6a5ffff | 2019-12-11 06:22:39.546 | 1576041759 |
| LONGLINE BUOY 06 89% | 8a3f664f44a7fff | 2019-12-11 04:13:01.891 | 1576033981 |
| LONGLINE BUOY 06 89% | 8a3f6641a08ffff | 2019-12-11 10:20:59.305 | 1576056059 |
| LONGLINE BUOY 06 89% | 8a3f664f6a27fff | 2019-12-11 03:05:14.675 | 1576029914 |
| LONGLINE BUOY 06 89% | 8a3f664f0daffff | 2019-12-11 01:54:01.929 | 1576025641 |
| LONGLINE BUOY 06 89% | 8a3f664f4c9ffff | 2019-12-11 05:14:46.724 | 1576037686 |
+----------------------+-----------------+-------------------------+------------+

我想要的是选择 etiqueta10 具有相同值并且它们的 unixtime 值之间的差异小于 7200 的行。Unixtime 是时间戳值的转换。

我不知道是否有一些 mysql 查询可以做到这一点。我是使用数据库系统的新手。 我也想过做一些 C 代码来做到这一点。

就像在这个摘录中一样,我有三行具有相同的 etiqueta10 值,并且时间差小于两个小时。 结果应该是:

| LONGLINE BUOY 06 89% | 8a3f664f6a5ffff | 2019-12-11 05:50:06.411 | 1576039806 |
| LONGLINE BUOY 06 89% | 8a3f664f6a5ffff | 2019-12-11 04:18:54.378 | 1576027134 |
| LONGLINE BUOY 06 89% | 8a3f664f6a5ffff | 2019-12-11 06:22:39.546 | 1576041759 |

谢谢。

【问题讨论】:

  • 是的,MySQL 可以做这种事情。请edit您的问题添加一些示例输出和您需要的更多解释。
  • 我已经添加了行示例的结果。这些行在 etiqueta10 字段上具有相同的值,并且时差小于两个小时,它必须同时是两件事。谢谢。

标签: mysql datetime


【解决方案1】:

您可以在 etiqueta10 上以 unix 时间戳差异

select * from <table_name> where etiqueta10 in (    
select a.etiqueta10 
from <table_name> a inner join <table_name> b
on a.etiqueta10=b.etiqueta10
where abs(a.unixtime-b.unixtime) between 0 and 7200);

【讨论】:

  • 我试过这个,但它给了我重复的行,这些行显然具有相同的 'etiqueta10' 值。我的意思是输出一次又一次是同一行。我只想要重复该字段和时间间隔之间的行,但不同的行。谢谢。
  • 编辑答案以获取所有行而不是重复相同的行
猜你喜欢
  • 2014-09-12
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多