【问题标题】:How to count the number of rows before a given row in MySQL with CodeIgniter?如何使用 CodeIgniter 计算 MySQL 中给定行之前的行数?
【发布时间】:2011-09-27 19:39:24
【问题描述】:

简单地说,我如何计算某行之前有多少行。我使用的是增量 ID,但行是随机删除的,因此仅检查 ID 是什么是行不通的。

如果我有 30 行,并且我根据名称(或其他任何东西)选择了一个,那么在该行之前有多少行?它可以是 16、1、12 或任何值。

我正在使用 MySQL 和 CodeIgniter。

【问题讨论】:

    标签: php mysql sql codeigniter


    【解决方案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 的 name 值。

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

    【讨论】:

      【解决方案2】:

      假设它是一个 auto_increment 列,删除的行将不会被再次填充,所以这应该可以完成工作。

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

      【讨论】:

        【解决方案3】:

        我假设您的主键列的数据类型为整数

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-06
          • 2019-06-07
          • 1970-01-01
          • 2017-12-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多