mysql - Codeigniter:根据给定条件从查询结果中获取行号

标签 mysql codeigniter

我有一个 mysql 表 - mytable,如下所示:

name | sales
Mark | 4
Steve | 2
Rick | 5
David | 1

根据完成的销售数量获取结果时,如下所示:

$this->db->select('name,sales');
$this->db->where('sales >=', '2');
$this->db->order_by("sales", "desc"); 
$query = $this->db->get('mytable');

并放入一个带有排名的表格,它看起来像:

Rank | Name | Sales
1 | Rick | 5
2 | Mark | 4
3 | Steve | 2

但是,我不想把它放在表格中。相反,我想根据查询条件了解一个人的排名。例如,给定名字 Mark,我应该直接将他的行号(排名)设为“2”。使用 codeigniter 事件记录实现此目的的 mysql 查询是什么?

最佳答案

你想要完成的事情是无法通过这种方式解决的。这意味着 MySQL 在进行任何操作之前就知道您认为的排名/位置。

唯一可管理的方法是迭代你的结果,只打印你不想打印的内容。

$name = "Mark";
$rank = 0;
$this->db->select('name,sales');
$this->db->where('sales >=', '2');
$this->db->order_by("sales", "desc"); 
$query = $this->db->get('mytable');

foreach($query->result() as $row)
{
    $rank++;
    if( $row->name == $name )
    {
        echo $row->name . ' has rank ' . $rank;
        break; // No more iterating
    } 
}

您应该考虑进行一些表更改 - 例如向表中添加自动递增 ID 以标识行而不是字符串。

关于mysql - Codeigniter:根据给定条件从查询结果中获取行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15627897/

相关文章:

php - 为什么我无法在 Codeigniter 中读取带有中文字符的输入值?

php - 字段列表中的未知列 'first'

php - Codeigniter 网址问题

php - 如何在 CodeIgniter 中将 HTML、PHP 内容插入数据库

MySQL 似乎没有在任何地方存储数据库

php - codeigniter db->选择自动处理mysql连接

javascript - 从表单检索数据(Codeigniter、AJAX)

php - 我可以在 PHP 中混合使用 MySQL API 吗?

php - 广度优先搜索方式的一般树遍历(无限)

php - 如何从 .JS 文件中重置一次性 PHP 表单 token 以防止表单泛滥?