ソート順が重複しているレコードが数千あるため(他のクエリでエントリが重複する原因になります)、これらすべてのレコードに正しいソート順を設定しようとしています。
まず、並べ替え順序が0から始まるように、すべてを-1に設定してから、次のクエリを実行します。
UPDATE op.customeraddress SET sortorder = (SELECT MAX(ca.sortorder) + 1
FROM op.customeraddress AS ca
WHERE ca.customerid = customeraddress.customerid)
WHERE id IN (<subquery for IDs>)
問題は、サブクエリのMAX()が常に同じ値を返すように見えることです。これは、以前の更新について認識していません。
レコードごとに手動で適用すると、クエリは正常に機能します。
ループに頼ることなくこれを行う方法についてのアイデアはありますか?