【发布时间】:2012-06-04 17:09:36
【问题描述】:
我有一个有 4 列的表 (TABLE1):
UID | PID |价值1 | VALUE2
我有另一个 SQL 语句 (STMT),它从其他一些表中返回 3 列:
UID | PID | VALUE1
现在这里是我想要更新 TABLE1 的条件:
首先,将 STMT 中的 UID 和 PID 对与 TABLE1 中的进行比较,
对于不在 TABLE1 中的所有新 UID 和 PID 对,将 STMT 中的新行插入到 TABLE1 中,设置 TABLE1.VALUE2 = 0(我已经这样做了)
-
对于 STMT 和 TABLE1 中现有的 UID 和 PID 对,请执行以下操作:
一个。如果 TABLE1.VALUE2 > 0,则更新 TABLE1.VALUE1 = STMT.VALUE1
b.如果 TABLE1.VALUE2 = 0 并且如果 TABLE1.VALUE1 != STMT.VALUE1,则更新 TABLE1.VALUE1 = STMT.VALUE1,否则什么也不做。
我无法为条件 2 提出解决方案。感谢您的帮助!
【问题讨论】:
-
第2步之后的最终结果是table1.value1 = stmt.value 1的所有情况。您是否特别需要避免将行更新为它们已经存在的相同值,以便触发器不会触发?
-
@evilotto 没关系,最终目的是让 TABLE1 始终保持最新。