Подсчет строк в базе данных и вывод нужного номера строки - PullRequest
0 голосов
/ 23 августа 2011

Если у меня есть 5 строк в моей базе данных mysql с идентификаторами 2, 4, 5, 6 и 8, и я отображаю идентификатор 5, как мне затем отобразить номер строки, который, конечно, будет строкой 3?Я получаю строку 3, считая все строки от начала базы данных до строки, которую я ищу.

Ответы [ 3 ]

1 голос
/ 23 августа 2011

Попробуйте использовать

SELECT @row_num:=@row_num+1 as row_number, id from table inner join (select @row_num:=0) as temp

$pdo = new PDO(....);
$result = $pdo->query($sql)->fetchAll();
foreach($result as $row) {
    print_r($row);
}
0 голосов
/ 23 августа 2011

Не могли бы вы просто посчитать количество строк до этого в порядке сортировки, который вы используете?

COUNT(*) FROM table WHERE id < ?

В этом случае будут учитываться только строки с идентификаторами 2 и 3, поэтому результат2. Если вы используете индекс на основе 1, добавьте к нему индекс, и у вас есть ответ.

0 голосов
/ 23 августа 2011

Правильным решением было бы добавить некоторый ключ auto_increment к вашей таблице, тогда каждой строке был бы присвоен порядковый номер. В противном случае вам не гарантируется получение одного и того же числа для каждого идентификатора, поскольку в запросе SQL без условия ORDER BY не гарантируется наличие какого-либо порядка (т. Е. Идентификаторы могут быть возвращены в случайном порядке).

В противном случае решение, данное Андреем Л., является правильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...