[英]How to count the number of rows before a given row in MySQL with CodeIgniter?
简而言之,我如何计算某行之前有多少行。 我正在使用增量 ID,但行是随机删除的,因此仅检查 ID 是什么是行不通的。
例如,如果我有 30 行,并且我根据名称(或其他任何东西)选择了一个,那么在该行之前有多少行? 它可以是 16、1、12 或任何值。
我正在使用 MySQL 和 CodeIgniter。
我假设您的主键列具有数据类型 integer
SELECT COUNT(*) FROM `table`
WHERE id < (SELECT id FROM `table` WHERE `conditions are met for specific row`)
假设它是一个auto_increment
列,删除的行将不会再次填充,所以这应该可以完成这项工作。
SELECT COUNT(*) FROM table WHERE id_column < your_selected_row_id;
在您的 model 上:
$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 的表,并且您正在过滤的列是“名称”并且您要查找的行具有名称约翰的价值。
第二行将为您提供查询“where id < number ”返回的行数,其中number是您从第一个查询中获得的 ID。 也许你甚至可以链接两条线。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.