我有一個問題。
我有 3 張桌子作為Table1, Table2, Table3.
Table1--> 第 1 列 (PLATE)、第 2 列 (DATE)Table2--> 第 1 列 (PLATE)、第 2 列 (BRAND)Table3--> 第 1 列 (BRAND)、第 2 列 (DATE)
我想用DATE列中Table1的資訊填充DATE列Table3
我們可以加入Table1 (PLATE)and Table2 (PLATE), Table2(BRAND)andTable3 (BRAND)
我試過了,但出錯了(無法修改映射到非鍵保留表的列)
UPDATE
(
SELECT TABLE1.DATE AS OLD_DATE,
TABLE3.DATE AS NEW_DATE
FROM TABLE1
JOIN TABLE2 ON TABLE1.PLATE = TABLE2.PLATE
JOIN TABLE3 ON TABLE3.BRAND=TABLE2.BRAND
) TABLES
SET TABLES.OLD_DATE = TABLES.NEW_DATE
;
我該如何進行此更新?
感謝您的幫助
uj5u.com熱心網友回復:
對于您的情況,使用MERGEwith MATCHEDoption 將是一個不錯的選擇,例如
MERGE INTO table1 t1
USING (SELECT t3."date", t2.plate
FROM table1 t1
JOIN table2 t2 ON t1.plate = t2.plate
JOIN table3 t3 ON t3.brand = t2.brand) tt
ON ( t1.plate = tt.plate )
WHEN MATCHED THEN UPDATE SET t1."date" = tt."date"
date是保留關鍵字,除非雙引號,否則不能用作列名。所以,參考了。順便說一句,帶引號的識別符號區分大小寫,我更喜歡"date"(而不是"DATE")作為表的列
uj5u.com熱心網友回復:
此錯誤訊息表明一個印版可能映射到不同的品牌或品牌可能映射到不同的日期。因此行內視圖是不可更新的,因為它不是一個鍵保留表。
嘗試一一設定值:
UPDATE TABLE1 t1
SET t1.OLD_DATE =
(SELECT MIN(t3.DATE) AS NEW_DATE
FROM TABLE2 t2
JOIN TABLE3 t3 ON t2.BRAND = t3.BRAND
WHERE t2.PLATE = t1.PLATE)
WHERE EXISTS((SELECT t3.DATE AS NEW_DATE
FROM TABLE2 t2
JOIN TABLE3 t3 ON t2.BRAND = t3.BRAND
WHERE t2.PLATE = t1.PLATE))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/467493.html
