如何在排序后使用分组拿到我们想要的数据?
如何在排序后使用分组拿到我们想要的数据?

如何在排序后使用分组拿到我们想要的数据?

开发过程中我们会遇到这样一个问题 比如班级里每个学生一年内每次考试的成绩都在一个表里 现在需要得到每个学生一年内的最高分 可能大家会想到先排序然后分组 但是实际操作会发现排序不生效 原因在与分组的优先级大于排序的优先 分组完之后就一个数据 排序自然而然就没效果了 那么该怎么做 才能拿到我们想要的结果呢?答案是先排序再分组再排序 看例子

        $where = [['note_content_tag', '<>', '']];
        //调用 buildSql 方法后不会进行实际的查询操作,而只是生成该次查询的 SQL 语句
        $subQuery = Db::name(`redbook_effect`)
            ->field('id,account_id,note_content_tag')
            ->order('id desc')
            ->where($where)
            ->buildSql();
        //先将所有数据排序然后where筛选 接着使用子查询构造新的查询并分组如需要对分组结果继续排序就在group后接order语句即可
        $list = Db::table($subQuery.' a')
            ->field('account_id,note_content_tag')
            ->group('account_id')
            ->select();

https://blog.csdn.net/BenChiZhuBaDaoWang/article/details/124875629

发表回复

您的电子邮箱地址不会被公开。