我需要根据具有匹配 id 的其他行中的值更新多行。
表结构:
ID | Sub-ID | value
----------------------------
1 | 1 | a
1 | 2 | b
1 | 3 | c
2 | 1 | x
2 | 2 | y
2 | 3 | z
3 | 1 | k
3 | 2 | l
3 | 3 | m
我需要使用特定 ID 的 SubID=3 值更新 SubID = 2 的值(其中 ID 在其他表中)
结果应该是(基于上述):
ID | Sub-ID | value
----------------------------
1 | 1 | a
1 | 2 | c
1 | 3 | c
2 | 1 | x
2 | 2 | y
2 | 3 | z
3 | 1 | k
3 | 2 | m
3 | 3 | m
实施它的最有效方法是什么?
这是我现在拥有的:
UPDATE data_tab tab1
SET (value) =
(SELECT tab2.value
FROM data_tab tab2
WHERE tab1.id = tab2.id
AND tab1.sub_id = 2 AND tab2.sub_id = 3
)
WHERE EXISTS (SELECT 1 FROM ids_table
WHERE id = tab1.id)