现在有个设备表和设备数据表,两个表通过设备id关联,一个设备对于多个条设备数据,并且设备数据有一个时间字段,我现在要拿取每个设备的第一条数据,目前已经有这设备id的list,不用子查询sql怎么写
时间: 2024-02-24 15:53:26 浏览: 134
mysql实现多表关联统计(子查询统计)示例
可以使用窗口函数中的ROW_NUMBER()函数来实现,具体的SQL语句如下:
```
SELECT device_id, data
FROM (
SELECT device_id, data, ROW_NUMBER() OVER (PARTITION BY device_id ORDER BY time ASC) AS rn
FROM device_data
WHERE device_id IN (1, 2, 3) -- 设备id的list
) t
WHERE t.rn = 1;
```
解释一下:
首先在子查询中对设备数据按照设备id分组,然后按照时间升序排序,再使用ROW_NUMBER()函数为每个设备数据编号。
最后在外部查询中选择每个设备数据的第一条数据,即ROW_NUMBER()为1的数据。
阅读全文