我想要这些数据的目的是让孩子获得最新的课程。
我的桌子:
| 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();
。但是,它无法正常工作。
答案 0 :(得分:0)
尝试此代码。
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
)
答案 1 :(得分:0)
这样,它可以解决您的问题:
SELECT * FROM `table_name` WHERE `id` IN (SELECT MAX(`id`) FROM `table_name` GROUP BY `child_id`)
答案 2 :(得分:0)
您可以使用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;
导入控制器