我有两列的下表。PostgreSQL:获取每个ID列的第一个和最后一个插入的记录
表:
create table tbl1
(
p_id int,
p_price int
);
插入:
INSERT INTO tbl1 values(1,100);
INSERT INTO tbl1 values(1,50);
INSERT INTO tbl1 values(1,20);
INSERT INTO tbl1 values(2,10);
INSERT INTO tbl1 values(2,20);
INSERT INTO tbl1 values(3,22);
INSERT INTO tbl1 values(3,89);
INSERT INTO tbl1 values(3,500);
查询:查询之后给我的每一行的行号。
SELECT p_id,p_price,row_number() over(partition by p_id order by p_id) rn
from tbl1
我想只得到每个产品id(p_id)的第一个和最后一个插入的记录。
预期结果:
p_id p_price
-----------------
1 100
1 20
2 10
2 20
3 22
3 500
在Postgres或大多数SQL中没有“第一个”和“最后一个”插入记录。你需要在这里定义一些命令。 –
没有“第一个”或“最后一个”插入行这样的事情。由于您使用的'order by'不会给你想要的结果,因为你排序的所有值都是相同的 - 因此数据库可以自由地以任意顺序返回它们的行 –
尝试将另一列作为'createdDate'它记录插入记录的日期时间。 – Viki888