:SQL更新與我在用的Oracle 11g以下更新查詢問題subsubquery
update TABLE_A a set COL1 =
(SELECT b.COL2 FROM
(SELECT ROWNUM AS ROW_NUMBER, b.COL2 from TABLE_B b where COL3 = a.COL4)
WHERE ROW_NUMBER = 2
)
ORA-00904: 「A」 「COL4」:無效的ID。
因此,a.COL4在子查詢中是未知的,但我不知道如何解決這個問題。
/編輯。我想做什麼?
TABLE_B中的每條記錄都有多條記錄。然而,來自客戶的新需求:TABLE_A將獲得2個新列,而TABLE_B將被刪除。因此,子查詢的第一個記錄的表示將寫入第一個新字段,第二個記錄也會寫入相同的記錄。第一個記錄是容易的,因爲邁克C'S解決方案可與ROW_NUMBER = 1
實例行中:
TABLE_A
| col0 | col1 | col2 | col3 | col4 |
------------------------------------
| | |dummy2|dummy3| 1 |
------------------------------------
| | |dummy4|dummy5| 2 |
------------------------------------
TABLE_B
| col1 | col2 | col3 |
----------------------
| d |name1 | 1 |
----------------------
| d |name2 | 1 |
----------------------
| d |name3 | 1 |
----------------------
| d |name4 | 2 |
----------------------
TABLE_A after update
| col0 | col1 | col2 | col3 | col4 |
------------------------------------
| name1| name2|dummy2|dummy3| 1 |
------------------------------------
| name4| |dummy4|dummy5| 2 |
------------------------------------
什麼是「where row_number = 2」的目的?你想要做什麼? – tbone
它在編輯中。需要將TABLE_B中前兩個記錄的表示匹配TABLE_A中兩個新字段中的字段。 – Cantillon
好的,所以一個數據透視表,將tableB中的2行變成tableA中的2列?可以考慮通過CTAS連接2個表格來重新創建tableA。什麼是Oracle版本? – tbone