SQL - 为具有许多记录的列表中的每个项目获取前 1

佩德罗多网

我有下表:

ID | Plate | RecordedAt
   |       |
   |       |

对于每个盘子,我可以有 N 条记录。

我正在处理以下查询:

 SELECT TOP 1 * 
 FROM table
 WHERE table.Plate IN ('plate1', 'plate2', 'plate3') 
 ORDER BY c.Recordedat DESC

问题是此查询仅返回所有列表的一条记录。

我需要列表中每个项目的前 1 个。

有没有办法只用一个查询来实现这一点?

戈登·利诺夫

您将使用窗口函数:

select t.*
from (select t.*,
             row_number() over (partition by plate order by recordedat desc) as seqnum
      from t
      where table.Plate in ('plate1', 'plate2', 'plate3')
     ) t
where seqnum = 1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL从表中获取每个项目的最新记录

SQL查询以查找计数> 1的记录

sql选择组在Python熊猫中具有count(1)> 1等效项?

每个组的SQL SELECT TOP 1

SQL Server表是否可以具有可解析为许多记录的表的外键?

从SQL Server中具有4列的表的每个集合中获取前N行

SQL选择team_id为的所有项目(列表中的1和2以及3和4以及.. rest值)

如何在SQL Server中获取具有不同P1等级的多个团队中的人员

SQL:每个分组取1个值

根据SQL Server中的条件返回前1条记录

如何在SQL Server中使用group by列基于where子句获取每个组的前1个记录

sql:联接表,返回记录数为1

从SQL中许多列名中具有最高值的前2个列名中获取二进制值

SQL:如何获取包含每个具有现有值的用户的单个记录的结果集

SQL-在1列中获取具有多个值的值

SQL:如何联接具有1百万条记录的表

SQL Server 2008获取组计数= 1的记录

SQL查询记录包含列表中的所有项目

动态SQL在每个ID中获取记录

SQL-避免1条记录中的2列具有相同的值

SQL为1:many关系的“父”表中的每个记录查找丢失的“子”记录

SQL查询以获取所有类型为1的用户的列表,以及一个新列,用于告知他们是否也具有类型2

SQL顺序为1-N-1

SQL将许多唯一ID的前1个合并

只需要为 sql 要求获取 1 条记录

SQL 检查在子实体中具有特定特征的记录(1 到 n)

sql 为 1 行的每个子组获取组内子组的最小值

T-SQL 从组中删除重复项,但不从每个组中获得前 1

CosmosDB - 返回具有许多记录的列表中每个项目的前 1 项的列表