我想做的是每更新.off()
时更新t1
。但是,我需要使用表t2
来加入它们,这意味着我需要一个子查询。当满足一个条件时,我可以成功更新t3
;但是,当涉及到多个条件时,我很难理解用于更新的语法-本质上,我在组合postgresql t1
,UPDATE
和子查询时遇到了麻烦。我正在寻找符合以下条件的东西:
IF/ELSEIF/ELSE
答案 0 :(得分:1)
如果在更新中用case语句替换其他内容,它将解决您遇到的问题。
update t1
set t1.current_location = CASE
WHEN SUBQUERY.status = 0 THEN 'Deployed'
WHEN SUBQUERY.status = 1 THEN 'Retrieved'
WHEN SUBQUERY.status = 2 THEN 'Lost'
ELSE t1.current_location
END
from (
select t3.serial_number, t2.status
from t2 inner join t3
on t2.some_id = t3.some_id
) as SUBQUERY
where SUBQUERY.serial_number = t1.serial_number;
答案 1 :(得分:1)
此查询应满足您的要求:
update t1
set current_location =
case t2.status
when 0 then 'Deployed'
when 1 then 'Retrieved'
when 2 then 'Lost'
end
from t2 inner join t3
on t2.some_id = t3.some_id
where t3.serial_number = t1.serial_number;