首页 > 解决方案 > 将多个列更新为相同的值时如何避免 SQL 中的重复?

问题描述

我需要更新表中的许多行,并且每行需要将多个列设置为相同的值。我正在使用 oracle SQL,但我无法使用 PL/SQL 来完成这项任务。

我目前正在做的一个例子:

update table set
     col_1 = 'An example column value', 
     col_2 = 'An example column value', 
     col_3 = 'An example column value'
where col_1 = 'original';

这可行,但需要大量繁琐的重复并且很丑陋。有没有办法在不使用 PL/SQL 的情况下减少这种重复?

标签: sqloracle12c

解决方案


Oracle 没有真正灵活的update,但它确实允许设置元组。这允许您使用这样的子查询:

update table
    set (col1_1, col2_2, col_3) =
         (select x.val, x.val, x.val
          from (select 'An example column value' as val from dual) x
         )
    where col_1 = 'original';

推荐阅读