从一个包含不同年份数据的大表(4000万条记录)中插入最新3条记录

问题描述 投票:0回答:1

我有如下数据..这只是一个示例数据,但每年有超过 1000 万条记录,我们可以一次性将其插入到下表中的另一个表中

Id name date
1  a    2018-01-01
2  b    2018-02-01
3  a    2018-6-01
4  a    2018-07-01
5  a    2018-10-01

6  a    2019-01-01
7  b    2019-02-01
8  a    2019-6-01
9  a    2019-07-01
10 a    2019-10-01
11 a    2020-01-01
12 b    2020-02-01
13 a    2020-6-01
14 a    2020-07-01
15  a    2020-10-01

尝试了很多方法,因为数据很大,我们只需要这些年来的 3 条最新记录,而太大的数据无法使用 SQL 查询。 预期输出:

Id name date
15 a     2020-10-01
14  a    2020-07-01
13  a    2020-6-01

7  b    2019-02-01
2  b    2018-02-01
sql insertion dynamic-queries incremental
1个回答
0
投票

这是一个应该在大多数 SQL 兼容数据库的最新版本中运行的查询。

select 
  Id
, name
, "date"
from (
    select 
      Id
    , name
    , "date"
    , row_number() over(partition by name order by "date" DESC) as row_num
    from your_table
    ) d
where row_num = 1

如果

row_number()
不可用,请告知使用哪种数据库类型和版本。

nb“date”是某些 SQL 实现中的保留字,因此您可能需要引用该列名以确保安全。

© www.soinside.com 2019 - 2024. All rights reserved.