このテーブルの主キーがあると仮定すると(持っている必要があります)、CTEまたはWITHを使用するだけでなく、同じテーブルへの自己結合を使用して更新を使用することもできます。
UPDATE a
SET a.interfaceId = b.sequence
FROM prices a
INNER JOIN
(
SELECT ROW_NUMBER() OVER ( ORDER BY b.priceId ) + ( SELECT MAX( interfaceId ) + 1 FROM prices ) AS sequence, b.priceId
FROM prices b
WHERE b.interfaceId IS NULL
) b ON b.priceId = a.priceId
主キーはprice-idであると想定しました。
派生テーブルのエイリアスbは、主キー列とともにROW_NUMBER()関数を介してシーケンスを生成するために使用されます。列interface-idがNULLである行ごとに、これにより、主キー値とともに一意のシーケンス値を持つ行が生成されます。
主キーではなく、他の順序でシーケンスを並べ替えることができます。
シーケンスは、サブクエリを介して現在のMAXインターフェイスID+1によってオフセットされます。MAX()関数はNULL値を無視します。
WHERE句は、更新をNULLの行に制限します。
次に、派生テーブルは同じテーブル、エイリアスaに結合され、主キー列で結合され、更新される列が生成されたシーケンスに設定されます。