繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM