sql - 在 MySQL 中选择多个唯一行

标签 sql mysql select

我有一个包含以下列的表格:

ID, sysid, x, y, z, timereceived

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/

相关文章:

mysql - 如何将一个表中的值放入另一个表中,其中table1的column1 = table2的column2?

php - 来自 mysql/JSON 的 twitter bootstrap typeahead 源代码

sql - 有没有办法通过 SQL 获取不带扩展名的文件名?

sql - 在Rails中查询sqlite哈希列

mysql - 如何安全地在行中运行多个查询?

php - 将日期格式从 2018-09-27T18 :30:00. 000Z 更改为 2018-09-27 13:17:14

php - 使用服务器端 : true 后,带有 Ajax 的 DataTable 无法正常工作

sql - 嵌套 SQL 语句但在内部语句中重用变量?

c - 具有非阻塞套接字的循环中的read()仅读取前1024个字节

sql - 重命名文件源