天天看點

oracle用一張表去比對一張表,用另一個表中的資料和字段比對的Oracle SQL UPDATE查詢...

我在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:單行子查詢傳回多行”。

有任何想法嗎?