我有两个表,一个用于测量,每隔3秒左右就会以非常简单的结构写入一个值:
测量:
| 时间戳|价值|
| - ------|- ------|
| 1679474929|五百一十六|
| 1679474933|小行星501|
| 1679474936|小五|
而秒包含所有 meta信息、触发值等。这一个是零星的,但随机的。元信息从改变的时刻到不同的改变是有效的,有时是一周,有时是一个月。在每次改变之间进行数千次测量。
我需要的是将它们连接在一起,使所有度量都具有元表中相关时期的 meta信息。
我在想象某种有条件的比较,就像这样。
首先,尝试:ON measurements.timestamp=meta.timestamp
那么ON DATE_FORMAT(FROM_UNIXTIME(measurements.timestamp), '%Y-%m-%d %H:%i')=DATE_FORMAT(FROM_UNIXTIME(meta.timestamp), '%Y-%m-%d %H:%i')
那么ON DATE_FORMAT(FROM_UNIXTIME(measurements.timestamp), '%Y-%m-%d %H')=DATE_FORMAT(FROM_UNIXTIME(meta.timestamp), '%Y-%m-%d %H')
那么ON DATE_FORMAT(FROM_UNIXTIME(measurements.timestamp), '%Y-%m-%d')=DATE_FORMAT(FROM_UNIXTIME(meta.timestamp), '%Y-%m-%d')
直到满足条件为止。
这可能吗?
2条答案
按热度按时间icnyk63a1#
你可以使用LEAD()window function来获取下一个
meta
行的timestamp
的值:如果你想从
meta
返回多个列,可能值得测试一下Bernd解决方案的lateral derived table版本的性能:8mmmxcuj2#
你是说像这样的事吗
样品