我使用这些数据的目的是让孩子获得最新的课程。
我的桌子:
| id | child_id | class_id |
|----|----------|------------|
| 1 | 1 | 15 |
| 2 | 2 | 18 |
| 3 | 1 | 19 |
| 4 | 1 | 17 |
预期成果:
| id | child_id | class_id |
|----|----------|------------|
| 2 | 2 | 18 |
| 4 | 1 | 17 |
实际结果:
| id | child_id | class_id |
|----|----------|------------|
| 1 | 1 | 15 |
| 2 | 2 | 18 |
我目前正在使用Enrolment::orderBy('id', 'desc')->groupBy('child_id')->get();
.但是它无法正常工作。
试试这段代码。
select * from table1
where id in (
select
Max(id) as t.id
from table1 as t
GROUP BY t.child_id ORDER BY t.id desc
)
这样,它可以解决您的问题:
SELECT * FROM `table_name` WHERE `id` IN (SELECT MAX(`id`) FROM `table_name` GROUP BY `child_id`)
您可以使用MAX
来显示最高值
$response= Enrolment::groupBy('child_id')->get(['child_id', DB::raw('MAX(class_id) as class_ids')]);
并将结果打印为
echo "<pre>";
print_r($response->toArray());
输出将是
Array
(
[0] => Array
(
[child_id] => 1
[class_ids] => 19
)
[1] => Array
(
[child_id] => 2
[class_ids] => 18
)
)
不要忘记在控制器中导入use DB;