天天看点

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:单行子查询返回多行”。

有任何想法吗?