简单地说,我如何计算某一行之前有多少行。我正在使用增量ID,但行是随机删除的,所以只需检查ID是什么就行不了。
如果我有30行,并且我根据名称(或任何真实的东西)选择了一行,那么在那之前有多少行?它可能是16,1,12或任何东西。
我正在使用MySQL和CodeIgniter。
答案 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。也许你甚至可以将两条线连在一起。