如何使用CodeIgniter计算MySQL中给定行之前的行数?

时间:2011-07-03 23:53:31

标签: php mysql sql codeigniter

简单地说,我如何计算某一行之前有多少行。我正在使用增量ID,但行是随机删除的,所以只需检查ID是什么就行不了。

如果我有30行,并且我根据名称(或任何真实的东西)选择了一行,那么在那之前有多少行?它可能是16,1,12或任何东西。

我正在使用MySQL和CodeIgniter。

3 个答案:

答案 0 :(得分:5)

我假设您的主键列具有数据类型integer

SELECT COUNT(*) FROM `table`
WHERE id < (SELECT id FROM `table` WHERE `conditions are met for specific row`)

答案 1 :(得分:2)

假设它是auto_increment列,则不会再次填写已删除的行,因此这应该可以完成。

SELECT COUNT(*) FROM table WHERE id_column < your_selected_row_id;

答案 2 :(得分:1)

在你的模特上:

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

return $rows;

注意我是如何使用“链式方法”的,因此需要PHP5,这是CI 2的默认值。

首先需要获取开始计算“向后”所需记录的ID,这是第一行,考虑一个名为users的表,并且您要过滤的列是“name”,您要查找的行具有John的名称值。

第二行将为您提供查询“where id&lt; number ”返回的行数,其中 number 是您从第一个查询获得的ID。也许你甚至可以将两条线连在一起。