我们可以在更新表时使用两个分区吗?
例如,我尝试做类似的事情但给我错误。
update student PARTITION (ma_stu_class1, ma_stu_class2)
set branch = 'R'||100;
如果有任何办法,请告诉我。
提前致谢
答案 0 :(得分:1)
您不能在select和update中使用多个分区。相反,您可以使用以下查询。
MERGE INTO student S
USING (SELECT * FROM student PARTITION(ma_stu_class1)
UNION ALL
SELECT * FROM student PARTITION(ma_stu_class2)) S1
ON (S.CONNON_COLUMN = S1.COMMON_COLUMN)
WHEN MATCHED THEN
UPDATE
SET
branch = 'R'||100;
UNION ALL具有多个分区的同一个表并使用MERGE函数可以更新表
答案 1 :(得分:0)
根据documentation,您无法像这样更新多个分区 - 如果可以的话,partition
内的PARTITION (partition)
右侧会出现一个箭头{1}}图表的一部分,可以通过partition
将您带回,
的左侧 - 类似于update_set_clause图的上半部分。
相反,您必须在where子句中使用分区键,例如如果你的钥匙在,例如col1和col2,你会这样做:
update student
set branch = 'R'||100
where (col1, col2) in (('class1', 'a'), ('class2', 'b'));