Вот что я пытаюсь сделать. У меня есть PHP-код, который выходит и получает запись из таблицы базы данных.Как получить порядковое положение записи, возвращенной mysql_query
Это сообщение было отмечено как дублируемое, поэтому я попробовал ответить на With MySQL, how can I generate a column containing the record index in a table? и, как ожидалось, дал мне порядковое положение 1, когда порядковое положение записи на самом деле - 19782. Эта ссылка дает номер строки на основе возвращенных результатов , мой вопрос отличается тем, что я просматриваю порядковое положение единственной возвращенной записи, основанной на всей таблице. Который я дважды заявлял в оригинальной записи.
$query-'SELECT * FROM ' . $datafile . ' WHERE ' . $seekindex . ' = "' $seekdata . '" ORDER BY ' . $fieldname;
Где: файл данных любой действительный таблицы из текущей открытой базы данных. seekindex - любое имя столбца из таблицы. seekdata предоставляется пользователем. имя_файла - любое имя столбца из таблицы.
Запрос работает нормально и возвращает записи (ы), которые он запросил, чтобы вернуться. Я хотел бы знать порядковое положение этой записи в файле данных, если все записи были выбраны упорядочиванием по имени поля. Мне нужно прокрутить вниз от 1 до 10 записей при заказе по имени поля. Тогда я мог бы использовать простой запрос, такие как:
$rn=mysql_result($result, 0, 'rownum'); // or what ever would give me the ordinal position.
$rn10=$rn+10;
$query='SELECT * FROM ' . $datafile . ' ORDER BY ' . $fieldname . ' LIMIT ' $rn .','. $rn10;
Там может быть более чем одна запись, которая соответствует исходный запрос, Хорошим примером может быть почтовый индекс таблицы, где пользователь может искать молнию на город рядом с ними, и они набирают их и хотят прокрутить вниз, пока они не найдут город, который они ищут. Если есть 20 записей, которые соответствуют тем же критериям, и я получаю следующие 10 записей, я никогда не буду двигаться, если я просто использую.
$query-'SELECT * FROM ' . $datafile . ' WHERE ' . $seekindex . ' >= "' $seekdata . '" ORDER BY ' . $fieldname . ' LIMIT 1,11;
Кроме того, может быть уникальное поле или идентификатор в таблице. Я всегда использую их, но в этом случае я не был создателем таблиц.
Я попытался получить все записи и отсортировать до тех пор, пока не найду тот, который я выбрал, но некоторые из кандидатов для файла данных имеют более 200 тыс. Записей, что стало непрактичным для динамического поиска, ожидая более двух минут для страницы вниз для вступления в силу.
Есть ли способ получить порядковое положение одной записи на основе всех записей для данного ORDER BY? Или есть другой способ, который я не вижу, потому что я так настроен сделать эту работу? Заранее спасибо.
Почему вы не используете 'LIMIT 0, 10' в первый раз,' LIMIT 10, 10' второй раз и т. Д.? – Barmar
Бармар, я могу начинать посередине стола. например, пользователь ставит почтовый индекс 34543, это будет отправной точкой. Я бы использовал позицию оттуда. Думаю, я мог бы произвольно установить это значение в ноль и использовать> = или <= и ограничить 0,10. ASC или DESC. – TR0712
Где этот вопрос задавали и отвечали раньше. Я искал достаточно времени, чтобы найти ответ. – TR0712