我有几千条带有重复排序顺序的记录(这会导致其他查询中的重复条目),所以我试图为所有这些记录设置正确的排序顺序。
首先,我将它们全部设置为 -1,以便排序顺序从 0 开始,然后执行以下查询:
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() 似乎总是返回相同的值——它不知道更早的更新。
如果我手动逐条应用它,查询工作正常。
关于如何做到这一点而不必诉诸循环的任何想法?