我已经在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错误。
此代码的目的是每小时检查每个设备的最后时间戳,并检查它是否处于离线状态。
谢谢。
答案 0 :(得分:2)
这是一个主意:
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)设置别名,然后获取其值
答案 1 :(得分:0)
$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'];
}
}
希望这对您有用。 谢谢。