Sql 在Laravel Elount中不正确使用UPDATE和ORDER BY
Iam正在尝试根据给定的ID列表更新“sortOrder”列。 例如,如果给定的ID为: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
$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。是否有其他方法?