根据另一个表中的值更新值

时间:2011-07-03 02:42:08

标签: sql postgresql sql-update

为此尝试了各种不同的选项,只是遇到了障碍。

我有两张桌子。每次在valuesfieldvalue表中stringvalue为'Minor'时,我想在问题表中将优先级更新为4.

UPDATE issue SET priority = '4'
FROM customfieldvalue
WHERE customfieldvalue.stringvalue = 'Minor';

1 个答案:

答案 0 :(得分:2)

我认为表格在某种程度上是相关的,比如说在IssueId字段上。所以你可以这样做:

UPDATE issue
SET priority = '4' 
WHERE IssueId IN (SELECT IssueId FROM customfieldvalue WHERE stringvalue = 'Minor')

您可能还希望嵌套查询中的where子句中的条件将自定义字段缩小为您所关注的字段,而不是任何值为“Minor”的自定义字段,如:

WHERE customfieldname = 'PRIORITY' AND stringvalue = 'Minor'

如果你要一直运行这个,那么你应该过滤掉那些在main where子句中已经有正确值的那些:

WHERE priority <> '4' AND IssueId IN (...