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);
}