使用select中的复合主键更新表的多字记录

时间:2017-09-07 22:28:43

标签: sql oracle

我的表格结构如下:

  • 4列(columnA,columnB,columnC,columnD)
  • 使用3列(columnA,columnB,columnC)作为主键。

除了使用for-loop之外,如何更新多行?

我正在寻找类似的东西:

UPDATE table 
SET columnC = 'something' 
WHERE (columnA,columnB,columnC) IN (
    SELECT columnA,columnB,columnC 
    FROM table 
    WHERE columnD = 'somethingD'
);

注意我正在尝试更新属于主键的列。**

1 个答案:

答案 0 :(得分:0)

更新set columnC ='something'其中columnD ='somethingD';

如果表中多行的columnD值相同,则此查询应该有效,是的,您可以更新作为复合主键一部分的列,直到更新的值不违反复合主键的唯一约束。