如何將此查詢重新寫入樣本更新。有人可以一步一步解碼我嗎?是整個表格1在這裏得到更新/替代Oracle的相關更新
UPDATE
(SELECT
A.COLUMN1 A_COLUMN1,
B.COLUMN2 B_COLUMN2
FROM TABLE1 A,TABLE2 B
WHERE A.COLUMN3=B.COLUMN3 AND A.COLUMN4=B.COLUMN4)
SET A_COLUMN1=B_COLUMN2;
如何將此查詢重新寫入樣本更新。有人可以一步一步解碼我嗎?是整個表格1在這裏得到更新/替代Oracle的相關更新
UPDATE
(SELECT
A.COLUMN1 A_COLUMN1,
B.COLUMN2 B_COLUMN2
FROM TABLE1 A,TABLE2 B
WHERE A.COLUMN3=B.COLUMN3 AND A.COLUMN4=B.COLUMN4)
SET A_COLUMN1=B_COLUMN2;
讓我回答這個問題。
子查詢正在使用內部聯接。因此,子查詢會過濾出與兩個表中的連接條件不匹配的行。這發生在更新之前。
因此,並非所有的行都會更新。如果要更新所有行,請使用left join
或:
UPDATE TABLE1
SET A_COLUMN1 = (SELECT B.B_COLUMN2
FROM TABLE2 B
WHERE A.COLUMN3 = B.COLUMN3 AND A.COLUMN4 = B.COLUMN4
);
你能爲我簡單更新並設置好嗎? – user1720827
嗨戈登,對不起再次提出這個問題。由於它是一個相關的子查詢,因此TABLE1中的所有TABLE2行都正在搜索中。它的選擇多於必要。如果TABLE1中有任何NULL,它將作爲查詢中的錯誤返回。我試圖將第一段代碼轉換成PostgreSQL。那麼有沒有其他方法可以實現這一點。再次打擾你。 – user1720827
這樣,它只是觸摸公共元素
UPDATE TABLE1
SET A_COLUMN1 = (SELECT B.B_COLUMN2
FROM TABLE2 B
WHERE A.COLUMN3 = B.COLUMN3 AND A.COLUMN4 = B.COLUMN4
)
WHERE EXISTS (SELECT B.B_COLUMN2
FROM TABLE2 B
WHERE A.COLUMN3 = B.COLUMN3 AND A.COLUMN4 = B.COLUMN4);
整個表沒有被更新。只有匹配的行是。 –
@戈登林諾夫:謝謝,如果我寫這樣的東西。 Update TABLE1 set COLUMN1 =(SELECT B.COLUMN2 FROM TABLE1 A,TABLE2 B WHERE A.COLUMN3 = B.COLUMN3 AND A.COLUMN4 = B.COLUMN4)。這是對的嗎 ? – user1720827