Sql 在Laravel Elount中不正确使用UPDATE和ORDER BY

Sql 在Laravel Elount中不正确使用UPDATE和ORDER BY,sql,laravel,query-builder,Sql,Laravel,Query Builder,Iam正在尝试根据给定的ID列表更新“sortOrder”列。 例如,如果给定的ID为: $orderList = ['id' =>'1','id' =>'5','id' =>'3'] ID of '1' => 'sortOrder column' = 1 ID of '5' => 'sortOrder column' = 2 ID of '3' => 'sortOrder column' = 3 查询语句: $ids_array = array_p

Iam正在尝试根据给定的ID列表更新“sortOrder”列。 例如,如果给定的ID为:

$orderList = ['id' =>'1','id' =>'5','id' =>'3']
ID of '1' => 'sortOrder column'  = 1
ID of '5' => 'sortOrder column'  = 2
ID of '3' => 'sortOrder column'  = 3
查询语句:

 $ids_array = array_pluck($orderList, 'id');
 $ids_string = implode(',', $ids_array);

 DB::statement(DB::raw('set @rownum=0'));

 $result = DB::table('requirements')
                 ->join('sections', 'sections.id', '=', 'requirements.section_id')
                 ->whereIn('id', $ids_array)
                 ->orderByRaw("FIELD(requirements.id, {$ids_string})")
                 ->update([
                     'requirements.sortOrder' => DB::raw('@rownum  := @rownum  + 1'),
                 ]);
但当我尝试使用此查询进行更新时,我得到一个错误:

SQLSTATE[HY000]: General error: 1221 Incorrect usage of UPDATE and ORDER BY

可能的重复是否确实需要与sections表联接?@MKhalidJunaid是的,我想做一些类似的事情:->where('sections.post_id',$some_id),然后您不能根据文档的多表语法,更新满足条件的表_引用中命名的每个表中的行。每个匹配行更新一次,即使它多次匹配条件。对于多表语法,不能使用ORDER BY和LIMIT。是否有其他方法?