[英]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.