Выберите, где номер строки = rownum

Я пытался выполнить этот запрос, чтобы выбрать строку по номеру строки, но я получаю неизвестный столбец »строка' в котором пункт. Возможен ли этот запрос

SELECT @row := @row + 1 AS row, pi.*
FROM ci_patient_info pi
where row = 2
 pilcrow10 окт. 2012 г., 16:56
Где вы инициализируете@row в ноль? Какой смысл в нумерации набора результатов, если вы нене можете указать ORDER BY?

Ответы на вопрос(2)

Решение Вопроса

Оберните это вsubquery

SELECT c.*
FROM
   (
      SELECT @row := @row + 1 AS row, pi.*
      FROM ci_patient_info pi
   ) c
where c.row = 2

ОБНОВЛЕНИЕ 1

может быть, ваш подзапрос должен выглядеть так,

  SELECT @row := @row + 1 AS row, pi.*
  FROM ci_patient_info pi, (SELECT @row:=0) x
 Raymond Feliciano10 окт. 2012 г., 22:47
получил работать, используя ваш второй пример спасибо
 Raymond Feliciano10 окт. 2012 г., 16:44
этот запрос дает мне пустой набор результатов
 John Woo10 окт. 2012 г., 17:11
Ваш запрос возвращает правильный результат, если его не было в подзапросе?
 pilcrow10 окт. 2012 г., 17:09
@RaymondFeliciano, этовероятно потому что ты нет явно инициализировать@rowТаким образом, он сохранил свое самое высокое значение (которое было больше двух) из предыдущего запуска.

Если вам нужна вторая запись, просто используйтеLIMIT пункт.

SELECT  pi.*
FROM ci_patient_info pi LIMIT 1, 1
 Raymond Feliciano10 окт. 2012 г., 16:49
Первоначально это был способ, которым я запрашивал БД. Проблема в том, что если я выберу строку 35 и использую оператор select @row, так как в наборе результатов только для строки 35 будет одна запись, поэтому номер строки будет не 35, а 1. Есть ли способ получить соответствующую строку? номер для этой записи

Ваш ответ на вопрос