выберите номер строки для данного идентификатора записи с помощью функции postgres row_number () - PullRequest
0 голосов
/ 31 января 2020

Извините, если мой вопрос не новый, но я не могу найти ответ. Я хочу найти номер строки для данного идентификатора в таблице postgres. У меня есть следующий запрос Postgres

"SELECT row_number() over (ORDER BY id DESC) FROM 
(SELECT id, row_number() over () FROM user ORDER BY id DESC) AS sub 
WHERE id = ?1"

? 1 - идентификатор пользователя

Этот запрос всегда возвращает 1 для любого идентификатора пользователя, но мне нужно, чтобы он возвращал фактический номер строки записи. Например, если у меня есть 50 записей в моей базе данных с идентификаторами от 1 до 50, и я выполняю запрос с id = 30, я хочу повторить row_number = 30. Заранее спасибо.

1 Ответ

0 голосов
/ 31 января 2020

Если Я следил за вами правильно, вы можете просто использовать агрегированный запрос:

select count(*) rn
from user
where id <= ?1

Это подсчитывает, сколько записей имеют id, который меньше (или равен) данный параметр.

...