【发布时间】:2022-03-31 20:36:16
【问题描述】:
我的表结构如下:
- 4 列(A 列、B 列、C 列、D 列)
- 以 3 列(columnA、columnB、columnC)作为主键。
除了使用 for 循环之外,我如何更新多行?
我正在寻找类似的东西:
UPDATE table
SET columnC = 'something'
WHERE (columnA,columnB,columnC) IN (
SELECT columnA,columnB,columnC
FROM table
WHERE columnD = 'somethingD'
);
请注意,我正在尝试更新属于主键的列。**
【问题讨论】:
-
你试过你的代码了吗?它应该可以工作。
-
由于一个非常奇怪的原因,我第一次这样做时它不起作用。但实际上它工作正常,也许我错过了一些东西,感谢您花时间回答。
-
如果您尝试以违反主键约束的方式进行更新,它将无法正常工作。 (或您的列上可能存在的唯一或检查约束等)但否则它应该起作用。
-
您的查询应该可以工作,但是如果您可以使用业务逻辑重新访问您的实现,那就太好了。因为在生产环境中更新表的主键是不好的。它可能会给您带来频繁的约束违规错误