0
点赞
收藏
分享

微信扫一扫

mysql案例,班级分组后,获取班级中最后一个学生的记录

Gaaidou 2024-08-28 阅读 25

1.sql

SELECT t.*
FROM your_table t
         INNER JOIN (
    -- 子查询找到每个班级的最大 id(假设 id 是自增的,可以作为记录顺序的参考)
    SELECT class_id, MAX(id) AS max_id
    FROM your_table
    GROUP BY class_id
) subquery ON t.class_id = subquery.class_id AND t.id = subquery.max_id;

2.说明

在这个查询中,首先通过子查询找到每个班级的最大 id 值,假设 id 是自增的,可以认为它能反映记录的先后顺序。然后将原始表与子查询的结果进行内连接,连接条件是班级 class_id 相同且 id 值等于子查询中找到的最大 id,这样就可以得到每个班级中的最后一个学生的记录。
你需要将 your_table 替换为你的实际表名。如果你的表中没有自增的 id 列,或者不能以 id 作为记录顺序的参考,可以考虑使用其他可以确定记录顺序的字段来替代 id 在上述查询中的作用。

3.注意点

your_table 是同一个表。

4.扩展

php代码

把id作为数组的key

$rows2 = [];
if($rows)
 {
     // 提取所有的id作为新的键
     $ids = array_column($rows, 'id');// 提取除id之外的其他数据作为值
     $values = array_map(function($item) {
         return $item;
     }, $rows);

     // 使用array_combine将id作为键,其他数据作为值
     $rows2 = array_combine($ids, $values);
 }
举报

相关推荐

0 条评论