3
我在使用Oracle 10g語法進行關聯更新時遇到困難。我正在PL/SQL過程中處理此代碼。Oracle關聯更新
我會在SQL Server作爲這樣解決這個問題:
UPDATE table_a a
SET a.prov_id=pn.prov_id,
a.step=1
from (
SELECT p.prov_id
FROM note n
INNER JOIN provider p ON n.author_id=p.user_id
where n.enc_id=a.enc_id
AND TRUNC(n.note_time)=a.attr_date
) pn
等效的Oracle語法爲:
UPDATE table_a a
SET a.prov_id=(
SELECT p.prov_id
FROM note n
INNER JOIN provider p ON n.author_id=p.user_id
where n.enc_id=a.enc_id
AND TRUNC(n.note_time)=a.attr_date
),
a.step=1
WHERE EXISTS (
SELECT *
FROM note n
INNER JOIN provider p ON n.author_id=p.user_id
where n.enc_id=a.enc_id
AND TRUNC(n.note_time)=a.attr_date
)
這是否實際上運行子查詢兩次?是否有比這更簡化的語法?
查看SQL關鍵字'MERGE':SQL Server和Oracle均支持這兩種SQL語言,均基於標準SQL,因此在這些SQL產品之間具有高度的可移植性。 – onedaywhen