2014-09-11 127 views
0

我試圖更新所有以'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; 

幫助,將不勝感激。

謝謝。

回答

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 

要執行

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; 
$$; 
+0

返回查詢,但犯規EXCUTE它....所以如何使這行得通 ? – user3393089 2014-09-11 06:51:39

+1

@ user3393089或將上面的內容放到PL/pgSQL塊中並使用動態SQL。這裏有很多關於如何做到這一點的例子。 – 2014-09-11 06:56:48

相關問題