簡體   English   中英

我如何編碼以顯示 mysql 數據庫中數據的每個更改

[英]How do I code to display every change in data in a mysql database

我有一個表格,其中包含以下格式的數據。

| ID  |        DateTime       | Value |
| 1   | 2019-08-12 05:07:25   |   0   |
| 2   | 2019-08-12 05:08:25   |   1   |
| 3   | 2019-08-12 05:09:25   |   1   |
| 4   | 2019-08-12 05:10:25   |   1   |
| 5   | 2019-08-12 05:11:25   |   0   |
| 6   | 2019-08-12 05:12:25   |   0   |
| 7   | 2019-08-12 05:13:25   |   0   |
| 8   | 2019-08-12 05:14:25   |   1   |
| 9   | 2019-08-12 05:15:25   |   1   |
|10   | 2019-08-12 05:16:25   |   0   |

從上表中,我需要將結果顯示為

Record NO |      Start Time      |        Stop Time    |
   1      | 2019-08-12 05:08:25  | 2019-08-12 05:11:25 |
   2      | 2019-08-12 05:14:25  | 2019-08-12 05:16:25 |

對於記錄 1,開始時間是第一個表 id #2,停止時間是 id 5。
記錄 2 的開始時間是第一個表 id # 8,停止時間是 id 10。

回答你的評論:“ 考慮一下我需要訪問可用數據的情況,我該怎么做?

一種方法是使用LEFT JOIN和派生表(子查詢)的組合。 在第一個子查詢中,我們為Value = 1每個記錄確定EndTime

現在,由於發出具有Value = 1的連續記錄,我們通過基於一組EndTime選擇最小值來在外部查詢中進一步過濾掉它。

詢問

SELECT Min(dt.`starttime`) AS `StartTime`,
       dt.`endtime`
FROM   (SELECT t1.`datetime`      AS `StartTime`,
               Min(t2.`datetime`) AS `EndTime`
        FROM   your_table_name AS t1
               LEFT JOIN your_table_name AS t2
                      ON t2.`datetime` > t1.`datetime`
                         AND t2.`value` = 0
        WHERE  t1.`value` = 1
        GROUP  BY t1.`datetime`) AS dt
GROUP  BY dt.`endtime`;

| StartTime           | endtime             |
| ------------------- | ------------------- |
| 2019-08-12 05:08:25 | 2019-08-12 05:11:25 |
| 2019-08-12 05:14:25 | 2019-08-12 05:16:25 |

查看DB小提琴

如果案例與我解釋的情況類似,那么您可以在表1填充數據后每天運行一個cron作業。 在cron作業中,您需要通過DateTime從表1中獲取數據。

foreach($records as $record) {
    $current_value = $record->value;
    if($previous_value == 0 && $current_value == 1) {
        $start_time = $record->DateTime;
    }
    if($previous_value == 1 && $current_value == 0) {
        $end_time = $record->DateTime;
    }
    $previous_value = $current_value;
}

你需要修復你的表結構,至少,你必須添加一個新列來識別記錄是什么

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM