Как узнать номер записи в Postgres по запросу

Здравствуйте!

У меня есть таблица

CREATE TABLE mytable (
text varchar(40),
n integer,
blok integer,
sost BOOLEAN,
id SERIAL PRIMARY KEY
);

Я выбираю из этой таблицы, например, первые 10 записей (1 страница)
SELECT * FROM mytable WHERE sost=true ORDER BY blok, n DESC LIMIT 0, 10;
, отображаю их на странице, потом на этой странице удаляю методом ajax какую-нибудь запись, отправляется запрос PHP скрипту, тот удаляет его из базы. Дальше этот PHP скрипт должен вернуть запись, которая вставится в конец списка, т.е. 11 запись, которая после удаления стала 10. Для этого мне надо перед удалением записи определить, на какой позиции находится удаляемая запись по запросу
SELECT * FROM mytable WHERE sost=true ORDER BY blok, n DESC
, если известен только ее id, на MYSQL это будет так:

SET @recNo:=0;
SELECT n FROM 
           ( SELECT @recNo:=@recNo+1 n, id FROM mytable WHERE sost=true ORDER BY blok, n DESC) 
s WHERE id=deleted_id;

Как узнать номер записи в Postgres по запросу, если известен id этой записи и "WHERE sost=true ORDER BY blok, n DESC"?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Вы не забыли, что работаете с

Вы не забыли, что работаете с МНОГОПОЛЬЗОВАТЕЛЬСКИМ окружением?
Совсем не факт. что во время вашего удаления, другие пользователи не вставят или не удалят какие-либо данные.
Таким образом. единственным надёжным средством идентификации записи является первичный ключ строки в таблице.
На мой взгляд, то что вы написали рассчитано исключительно на то, что весь процесс выполняется эксклюзивно одним пользователем.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023