Как посчитать количество строк перед данной строкой в ​​MySQL с помощью CodeIgniter? - PullRequest
4 голосов
/ 04 июля 2011

Проще говоря, как мне посчитать, сколько строк перед определенной строкой? Я использую инкрементные идентификаторы, но строки удаляются случайным образом, поэтому просто проверить, что это за идентификатор, не получится.

Если у меня есть, скажем, 30 строк, и я выбрал одну на основе имени (или чего-то еще), сколько строк будет до этой? Это может быть 16, 1, 12 или что угодно.

Я использую MySQL и CodeIgniter.

Ответы [ 3 ]

5 голосов
/ 04 июля 2011

Я полагаю, ваш столбец первичного ключа имеет целочисленный тип данных

SELECT COUNT(*) FROM `table`
WHERE id < (SELECT id FROM `table` WHERE `conditions are met for specific row`)
2 голосов
/ 04 июля 2011

Предполагая, что это столбец auto_increment, удаленные строки не будут заполняться снова, поэтому это должно сработать.

SELECT COUNT(*) FROM table WHERE id_column < your_selected_row_id;
1 голос
/ 04 июля 2011

На вашей модели:

$id = $this->db->get('users')->where("name", "John")->id;
$rows = $this->db->get('users')->where("id < ", $id)->num_rows();

return $rows;

Обратите внимание, как я использую «цепочечные методы», и для этого вам нужен PHP5, который является значением по умолчанию для CI 2.

Сначала вам нужнополучите идентификатор записи, которую нужно начать считать «в обратном направлении», которая является первой строкой, учитывая таблицу с именем users и фильтруемый столбец «name», а строка, которую вы хотите найти, имеет значение имени John.

Во второй строке будет указано количество строк, возвращенных запросом "где id <<em> число ", где число - это идентификатор, полученный в первом запросе.Может быть, вы даже можете связать обе строки.

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