如何从表中获取最新的最后 2 条插入记录


CREATE TABLE `testskm`(
`mem_id`      NUMBER(5) NOT NULL,
`mem_sal`     NUMBER(5) NOT NULL);
insert into `testskm` values (1,100);
insert into `testskm` values (1,200);
insert into `testskm` values (2,350);
insert into testskm values (2,150);
insert into testskm values (3,12);
insert into testskm values (1,300);
insert into testskm values (2,50);
insert into testskm values (3,13);
insert into testskm values (3,14);
insert into testskm values (3,15);

我有mem_id1,2 和 3 的插入语句。我想获取表中所有mem_id的最后 2 条插入记录。

我已经尝试了下面的代码,但它只给了我基于mem_sal的记录,因为我使用了顺序。

select * from(
select
mem_id, mem_sal, 
--max(sysdate) over (partition by mem_id) latest,
rank() over( partition BY mem_id order by mem_sal ) RISK_ORDER
from testskm)
where RISK_ORDER <= 2

我想要这些插入记录的输出:

insert into `testskm` values (1,200);
insert into `testskm` values (1,300);
insert into `testskm` values (2,150);
insert into `testskm` values (2,50);
insert into `testskm` values (3,14);
insert into `testskm` values (3,15);

SQL 表表示无序集。 没有"最后两行",除非列指定排序。 您的表没有这样的列。

您可以定义一个。 在MySQL中,这看起来像:

create table `testskm` (
testskm_id int auto_increment primary key,
`mem_id`  int NOT NULL,
`mem_sal` int NOT NULL
);

然后你可以使用row_number()

select ts.*
from (select ts.*, row_number() over (partition by mem_id order by testskm_id desc) as seqnum
from testskm ts
) ts
where seqnum <= 2;

这是一个数据库<>小提琴。

最新更新