@viktorross

Как определить позицию строки в бд mysql?

Здравствуйте, подскажите пожалуйста , как сформировать запрос в бд, который показал бы позицию строки после выборки? т.е существует ID =105 образно говоря, но нужно сначала сделать выборку по некоторым строкам, например city=москва, мы точно знаем, что id=105 ,будет соответствовать city=москва, но с таким city есть еще 100 записей, а сортировка будет по столбцу data, т.е order by data desc, так вот надо понять какая позиция id=105 по всем строкам соответствующим city=москва в порядке убывания по data будет занимать строка

я нашел вот такое, но это не совсем то что нужно

SELECT row_number, id, region
FROM (

SELECT @I := @I +1 AS row_number, id
FROM `class_item` , (

SELECT @I :=0
)tt
ORDER BY data DESC
)dd
WHERE `id` = '105'


какое есть решение? возможно в несколько запросов
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Для извлечения, изменения, удаления конкретной записи таблицы достаточно знать значение первичного ключа. Первичный ключ обладает свойством уникальности значения. Знать позицию записи таблицы, которая записалась физически в базу не имеет смысла. При выборке может быть полезна нумерация строк, но эта нумерация всегда относительна и зависит от сортировки.
В вашем случае запрос будет выглядеть так.
SELECT c.id, c.region,
(select count(*)
   from `class_item` c2
   where c.data <= c2.data-- знак будет влиять на направление нумерации
       ) as row_num
FROM `class_item` c
order by с.data desc

Поле data должно иметь индекс, иначе скорость выборки будет падать с ростом числа строк.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы