如何使用特定列名更新所有表

use*_*089 0 sql database postgresql

我试图更新所有表格以'agg%'和column_name ='%userid%'开头的表格...但我在网上看不到任何这样的例子,即使我能找到选择所有具有特定列的表格的选项名称和表名我需要做同样的事情来更新这些表,如下所示:

    update TABLE_NAME set COLUMN_NAME='rajeev' WHERE COLUMN_NAME LIKE '%userid%'
and TABLE_NAME LIKE 'agg%'
FROM INFORMATION_SCHEMA.COLUMNS;
Run Code Online (Sandbox Code Playgroud)

帮助将不胜感激.

谢谢.

Viv*_* S. 5

获取您的条件的更新查询

     select 
        'update '||c.table_name||' set '||c.COLUMN_NAME||' = ''rajeev'';' 
         as my_update_query
     from 
        (select 
            table_name,COLUMN_NAME
         from INFORMATION_SCHEMA.COLUMNS 
         where table_name LIKE 'agg%' and COLUMN_NAME LIKE '%userid%') c
Run Code Online (Sandbox Code Playgroud)

执行

 do $$
  declare
    arow record;
  begin
    for arow in
    select 
        'update '||c.table_name||' set '||c.COLUMN_NAME||' = ''rajeev'';' 
         as my_update_query
     from 
        (select 
            table_name,COLUMN_NAME
         from INFORMATION_SCHEMA.COLUMNS 
         where table_name LIKE 'agg%' and COLUMN_NAME LIKE '%userid%') c
    loop
     execute arow.my_update_query;
    end loop;
  end;
$$;
Run Code Online (Sandbox Code Playgroud)