我想根据另一个字段中的条件更新数据库中的列。我可以通过两个独立的查询来做到这一点:
update table_a
set field_1 = 'English text'
where ctid in (
select table_a.ctid from table_a
left join table_b
on table_b.a_id = table_b.id
left join table_c
on table_c.id = table_b.c_id
where table_c.language = 'EN'
);
update table_a
set field_1 = 'French text'
where ctid in (
select table_a.ctid from table_a
left join table_b
on table_b.a_id = table_b.id
left join table_c
on table_c.id = table_b.c_id
where table_c.language = 'FR'
);
但是,还有更多的语言需要考虑。我想写一个脚本,我可以定义一个Map的语言/文本对,然后执行上述语句的每一对。我该怎么做呢?
我试着寻找PL/pgSQL For循环,但我无法应用我能找到的例子。
1条答案
按热度按时间7gs2gvoe1#
一种选择是将语言代码/描述的对声明为行,然后过滤和更新。
我还怀疑你的
in
条件可以重写为exists
,而不需要使用ctid
并重新打开源表。所以: