You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用CodeIgniter编写含子查询的SELECT语句计算密集排名及转换指定SQL

CodeIgniter实现带密集排名子查询的SELECT语句

下面提供两种将指定原生SQL转换为CodeIgniter查询语句的方式:

使用Query Builder构造

Query Builder是CodeIgniter推荐的查询方式,会自动处理数据转义,提升安全性:

$this->db->select('1 + (SELECT count(*) FROM student_rank a WHERE a.obtained_total_mark > b.obtained_total_mark) AS rank');
$this->db->from('student_rank b');
$this->db->where('student_id', '5');
$this->db->order_by('rank');
$this->db->limit(1);

// 获取排名结果
$rank_result = $this->db->get()->row();
$student_rank = $rank_result->rank;

直接执行原生SQL

如果查询逻辑复杂,直接执行原生SQL会更直观:

$native_sql = "SELECT
    1 + (
        SELECT count( * )
        FROM student_rank a
        WHERE a.obtained_total_mark > b.obtained_total_mark
    ) AS rank
FROM student_rank b
WHERE student_id = '5'
ORDER BY rank
LIMIT 1";

// 执行并获取结果
$rank_result = $this->db->query($native_sql)->row();
$student_rank = $rank_result->rank;

两种方式最终都会返回student_id为5的学生的密集排名结果。

内容的提问来源于stack exchange,提问作者Chhupendra Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:55:48