我有兩列的下表。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