oracle sql - 根据另一个属性值更新同一个表
Posted
技术标签:
【中文标题】oracle sql - 根据另一个属性值更新同一个表【英文标题】:oracle sql - update same table based on another attribute value 【发布时间】:2015-06-04 00:11:07 【问题描述】:我在 oracle 中有一个表,它有 4 个属性,具有以下值
attribute_a attribute_b attribute_c attribute_d
abcd1 1 0
abcd1 2 1
abcd1 3 0
def1 1 1
def1 2 1
我想根据attribute_c中的值将带有“逻辑与”值的attribute_d更新为attribute_d 即对于 abcd1,逻辑 AND 为 0。我想用属性_d 中 abcd1 的值 0 更新表 对于def1,我想用def1 的attribute_d 中的值1 更新表。我可以使用 MERGE 来完成此操作吗?如果有人可以给我一个查询,我将不胜感激。
【问题讨论】:
你的意思是按位而不是。 为什么要更新表?像这样存储计算值通常是个坏主意。 (数据不一致...)改为创建一个视图,该视图始终具有新的 attribute_d 值,即使在其他列已更新之后也是如此。 (如果您确实必须存储 attribute_d 值,请使用触发器来处理它的更新。) 【参考方案1】:首先,我同意 @jarlh 关于存储计算值的评论。
解决方案:
UPDATE [TableName]
SET attribute d = (CASE WHEN attribute_b = attribute c THEN 1 ELSE 0 END)
【讨论】:
以上是关于oracle sql - 根据另一个属性值更新同一个表的主要内容,如果未能解决你的问题,请参考以下文章
Oracle PL/SQL:如何根据同一记录的 ID 字段返回字符串值?
根据另一列的另一个值和/或另一行中的同一列更新设置值:-ORA 1427