У меня есть следующая таблица с двумя столбцами.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
Я хочу получить только первую и последнюю вставленную запись для каждого идентификатора продукта (p_id).
Ожидаемый результат:
p_id p_price
-----------------
1 100
1 20
2 10
2 20
3 22
3 500
В Postgres и большинстве разновидностей SQL нет «первой» и «последней» вставленной записи. Здесь вам нужно будет определить какой-то порядок. –
Нет такой вещи, как «первая» или «последняя» вставленная строка. И используемый вами «порядок» не даст вам то, что вы хотите, поскольку все значения, которые вы сортируете, одинаковы - и, следовательно, база данных может возвращать эти строки в любом порядке, который он хочет. –
Попробуйте использовать другой столбец как 'createdDate' который регистрирует дату и время записи. – Viki888