我在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:单行子查询返回多行”。
有任何想法吗?