我有一张表,上面有以下几列:
ID,sysid,x,y,z,接收时间
ID是每行的唯一编号。
sysid是特定设备的ID号(大约100个不同的设备)
x,y和z是从设备接收的数据。(完全随机数)
timereceived是接收数据时的时间戳。
我需要一个SQL查询来显示设备a、设备b、设备c等的最后一个插入行。
我一直在玩很多不同的Select语句,但从来没有得到任何有效的语句。我通过使用group by设法获得唯一的行,但是其余的信息是随机的(或者至少感觉非常随机)。
有人能帮我吗?
这个表中可能有几十万条记录。

最佳答案

    SELECT id, sysid, x, y, z, timereceived
      FROM tbl
INNER JOIN (  SELECT sysid, max(timereceived) as "timereceived"
                FROM tbl
            GROUP BY sysid ) most_recent
     USING (sysid, timereceived)

这将为您提供完整的行,其中timereceived是每个sysid的最新行。

关于sql - 在MySQL中选择多个唯一的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2874713/

10-11 03:26