두 개의 열이있는 다음 표가 있습니다.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