我在Oracle SQL資料庫中有兩個表。這些有趣的領域是:
表A:
參考-A | Type-A |時間戳-A
表B:
參考-B | Type-B |時間戳-B
表B中的時間戳字段是新建立的,是以全部為NULL,我想用來自表A的時間戳值更新該字段。
引用A和引用B确實是一對一比對的,但每個引用有不同的類型有多行,是以我也需要選擇類型。 Type-A和Type-B不一樣,是以我需要對它們進行IF-ELSE比對,例如:Type-B1-> Type-A1,Type-B2-> Type-A2
并不是所有的Reference-B和Type-B的組合在表A中都有比對,是以對于這些情況,它可以将表B中的時間戳設定為空。
那麼這個UPDATE語句的SQL查詢如何呢?我試過這個(僞);
UPDATE B
SET timestamp = (
SELECT A.timestamp
FROM A, B
WHERE A.reference = B.reference
AND A.type =
(CASE
WHEN B.type = 'B1'
THEN 'A1'
WHEN B.type = 'B2'
THEN 'A2'
WHEN B.type = 'B3'
THEN 'A3'
WHEN B.type = 'B4'
THEN 'A4'
END)
);但是,當我運作此查詢時,出現以下錯誤:“SQL錯誤:ORA-01427:單行子查詢傳回多行”。
有任何想法嗎?