获取用户的DISTINCT ID,并找到其列的MAX,然后进行UPDATE,LARAVEL

时间:2018-11-16 00:47:07

标签: mysql laravel eloquent laravel-5.6 laravel-query-builder

我想做的是,根据关联列的distinct值,id max,然后相应地update列。

例如

id  |  name  |  total  |  description  |  updateThis

1   |  john  |  100    |  example      |      0
2   |  dave  |  300    |  example      |      0  
2   |  johno |  500    |  example      |      0
4   |  derik |  900    |  example      |      0
5   |  Sam   |  1000   |  example      |      0
4   |  bool  |  12200  |  example      |      0
1   |  john  |  1200   |  example      |      0
5   |  john  |  300    |  example      |      0

我希望它看起来像这样:

id  |  name  |  total  |  description  |  updateThis

1   |  john  |  1200   |  example      |      1
2   |  johno |  500    |  example      |      1
4   |  bool  |  12200  |  example      |      1
5   |  Sam   |  1000   |  example      |      1

我使用Query Builder并不是一种雄辩的方式,如果这是一个有用的答案,并且如果有人可以同时给出这两者,那我就很棒,我只需要帮助谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用此:

$rows = DB::table('table')
    ->select('id', DB::raw('max(total) as total'))
    ->groupBy('id')
    ->get();
foreach($rows as $row) {
    DB::table('table')
        ->where('id', $row->id)
        ->where('total', $row->total)
        ->update(['updateThis' => 1]);
}