亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 PHP MySQL 的單個查詢中獲取相隔 10 分鐘的所有行?

如何在 PHP MySQL 的單個查詢中獲取相隔 10 分鐘的所有行?

PHP
拉丁的傳說 2023-09-08 21:44:47
我有一個表設備,其中包含記錄的溫度值及其測量時間。我需要通過僅獲取至少相隔 10 分鐘的值來對這些數據進行采樣。(例如,如果第一行讀取 (30k,8.40.00),則下一行包含8.50.00 之后或時的值(以接下來 10 分鐘的值為準)。我的時間列存儲為 sting 格式 (Hms)。我當前在 PHP 中的選擇查詢是$sql="select value ,time from device where time >= '$interval' order by time limit 1";使用 strtotime 方法, $interval 值增加 10 min 。每次只選擇一行問題是我需要使用循環來獲取所有可能的行。我的問題是如何在不使用循環的情況下獲取所有行,就像在單個查詢中一樣?為了使用 for 循環,我不需要提前知道行數。
查看完整描述

3 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

這比你想象的更復雜。您不能只查看連續行之間的間隔,您需要跟蹤選定的最后一行以識別下一行。這意味著一個迭代過程;在 SQL 中,這通常使用遞歸查詢來實現 - MySQL 僅支持從 8.0 版本開始。


考慮:


with recursive cte as (

    select value, time 

    from device 

    where time = (select min(time) from device)

    union all

    select d.value, d.time 

    from cte c

    inner join device d on d.time = (

        select min(d1.time) from device d1 where d1.time >= c.time + interval 10 minute

    )

)

select * from cte


查看完整回答
反對 回復 2023-09-08
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

我建議首先使用窗口函數獲?。ㄖ辽伲?0 分鐘后每行的值,然后應用遞歸子查詢:


with recursive d(value, time, next_time) as (

? ? ? select value, time,

? ? ? ? ? ? ?min(time) over (order by time

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?range between interval 10 minute following and unbounded following

? ? ? ? ? ? ? ? ? ? ? ? ? ? ) as next_time

? ? ? from device

? ? ?)

? ? ?recursive cte(value, time, next_time) as (

? ? ? (select value, time, next_time

? ? ? ?from d?

? ? ? ?order by time

? ? ? ?limit 1

? ? ? ) union all

? ? ? select d.value, d.time, d.next_time

? ? ? from cte join

? ? ? ? ? ?d?

? ? ? ? ? ?on device.time = cte.next_time

? ? ? )

select *

from cte;

這是一個 db<>fiddle。



查看完整回答
反對 回復 2023-09-08
?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

我認為這會起作用:

$sql="select `value`,`time` from `device` where MINUTE(`time`) IN (0, 10, 20, 30, 40, 50) order by `time`";

如果您有 10 分鐘的多個值并且只需要一個,請使用 group by MINUTE( time)


查看完整回答
反對 回復 2023-09-08
  • 3 回答
  • 0 關注
  • 169 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號