Если столбец id_comment
является идентификатором автоинкремента, вы можете подсчитать идентификаторы, которые меньше или равны тому, который вы ищете:
select count(*)
from comments
where id_comment <= (select id_comment from comments where comment = 'comment H')
Если вы хотите искать по id_comment
:
select count(*)
from comments
where id_comment <= :id_comment
Или с функцией окна row_number()
:
select t.rn
from (
select *, row_number() over (order by id_comment) rn
from comments
) t
where t.comment = 'comment H'
По id_comment
:
select t.rn
from (
select *, row_number() over (order by id_comment) rn
from comments
) t
where t.id_comment = :id_comment
Если вы выберете последний запрос, вы можете добавить Предложение WHERE
:
select t.rn
from (
select *, row_number() over (order by id_comment) rn
from comments
where id_comment <= :id_comment
) t
where t.id_comment = :id_comment
, потому что нет необходимости обрабатывать id_comment
s больше :id_comment
.
Другое решение с функцией окна COUNT()
:
select count(*) over (order by id_comment)
from comments
where id_comment <= :id_comment
order by id_comment desc limit 1