簡體   English   中英

為表上的每個組選擇最后一個時間戳(記錄)

[英]Select last timestamp (record) for each group on table

我已經在Stack Overflow中通過了一些問題,但是經過一些測試后,無法解決我的問題。 我有一張下面的桌子。

  ID           log_device_id           device_timestamp
=========================================================
  1456              0056              2019-05-19 11:45:18
  1451              0061              2019-05-19 22:00:03
  1450              0035              2019-05-19 17:16:23
  1449              0011              2019-05-19 12:31:34
  1448              0124              2019-05-18 09:11:27

我正在使用下面的代碼來獲取設備ID列表和時間戳;

sql ='SELECT log_device_id,max(device_timestamp) FROM devicetable group by log_device_id';
    $result = mysqli_query($conection, $sql);
         if (mysqli_num_rows($result) > 0) {
            while($row = mysqli_fetch_assoc($result)) {
            echo $row['log_device_id'];
            echo $row['device_timestamp'];
            }

問題是,此查詢的結果返回ID和上次時間戳,但是$row['device_timestamp']空並顯示500錯誤。

此代碼的目的是每小時檢查每個設備的最后時間戳,並檢查它是否處於脫機狀態。

謝謝。

這是一個主意:

sql ='SELECT log_device_id,max(device_timestamp) as max_device_timestamp FROM devicetable group by log_device_id';
$result = mysqli_query($conection, $sql);
     if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
        echo $row['log_device_id'];
        echo $row['max_device_timestamp'];
        }

您為max(device_timestamp)設置別名,然后獲取它的值

$sql ='SELECT log_device_id, device_timestamp FROM devicetable WHERE device_timestamp = (SELECT MAX(device_timestamp) FROM devicetable) group by log_device_id';
$result = mysqli_query($conection, $sql);
if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        echo $row['log_device_id'];
        echo $row['device_timestamp'];
    }
}

希望這對您有用。 謝謝。

暫無
暫無

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

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