テーブル (2000 行をはるかに超える "Sensor") にほぼ 2000 行あり、センサー名という 1 つの列を更新する必要があります。
更新内の置換の一部は、別のテーブル deviceport の内容に基づいています。
Deviceport は、この deviceportid 列 (sensor.deviceportid = deviceportid) を通じて更新テーブルに関連付けられています。したがって、実際の更新は行ごとに異なります。2000 個の update ステートメントを作成する必要はありませんが、"where" ステートメントが何を意味するのかわかりません。
UPDATE sensor sn SET sn.sensorname = (
SELECT REGEXP_REPLACE(
sensorname,
'^P(\d)',
'J ' || (
SELECT d.deviceportlabel
FROM deviceport d
WHERE d.deviceportid = s.deviceportid
) ||
' Breaker \1'
)
FROM sensor s
WHERE REGEXP_LIKE( sensorname, '^P(\d)')
)
WHERE ...?
手がかりはありますか?