首页 > 解决方案 > 如果其他表列具有值 else false,postgresql 更新 true

问题描述

如果在 tableB 列中具有任何值,否则我想将 tableA 列更新为“True”,否则将其更新为 false。更新过程应该对所有动态地拥有这个表的模式进行。请帮助我。

update TA set TA.col=true else false (如果 TB.col 有任何值)

DO $$ 
declare 
  l_rec record; 
  l_schema_name varchar(100); 
  l_sql varchar(100); 
BEGIN 
    for rec in select Table_schema, table_name from information_schema.tables where table_name='table A' and 'table B'
    LOOP
l_schema_name :=rec.Table_schema;
    l_sql := 'update '||l_schema_name||'.TA Set TA.column1= (case when isnull(TB.Column,' ')=' ' then false else true end) From tableA TA left join tableB TB on TA.Col=TB.Col';    
     begin
        execute l_sql;
      end;
    END loop;
END;
$$;

标签: postgresql

解决方案


我有上述查询的解决方案。

DO $$ 声明记录记录;l_schema_name varchar(100); l_sql varchar(1000); BEGIN for rec in select Table_schema, table_name from information_schema.tables where table_name='TA' and table_schema='schema_name' LOOP l_schema_name :=rec.Table_schema; l_sql := 'update '||l_schema_name||'.TableA TA set TA.col=true where id in (select id from '||l_schema_name||'.Tableb TB)'; 开始执行 l_sql; 提高通知 '更新为 % :',l_schema_name; 结尾; 结束循环;结尾; $$;


推荐阅读