Mysql两个表连接,其中第二个表具有唯一记录,每个表的最后一个条目

时间:2017-04-12 09:59:17

标签: mysql

我正在努力解决看似简单的任务。我的数据库中有两个表:

Table devices:
id, uid, devicecode, devicename, devicetype

Table devicelogs:
id, devicecode, timelogged, devicestatus

在我加载页面之前,我使用以下查询获取所有用户的设备:

 $sql = "SELECT * FROM devices WHERE `uid`='1'";

这让我获得了所有用户的设备,然后我们用它来创建交换机'在页面上使用复选框。

要设置复选框的状态,我需要检查该设备的最后一个设备状态是在'设备列表中。桌子(打开或关闭)。

我猜我必须进行某种联接,其中devicelogs表应该显示每个设备的最后记录。不知道如何去做,我很感激我能得到任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

您可以分两步构建查询。首先,您会获得每个timelogged

的最新devicecode
select  devicecode, max(timelogged) as max_timelogged
from    devicelogs
group by devicecode

您可以将上述查询用作过滤器,通过将其与原始表

连接起来
select  t1.*, t2.timelogged, t2.devicestatus
from    devices t1
join    devicelogs t2
on      t1.devicecode = t2.devicecode
join    (
            select  devicecode, max(timelogged) as max_timelogged
            from    devicelogs
            group by devicecode
        ) t3
on      t2.devicecode = t3.devicecode and
        t2.timelogged = t3.max_timelogged