Select

從表中替換為 SELECT

  • December 18, 2015

DB2 中有沒有辦法用同一張表中的選定行替換整個表?

類似的東西REPLACE into tableName select * from tableName where col1='a';

(我可以導出選定的行,刪除整個表並再次載入/導入,但我想避免這些步驟並使用單個查詢)。

原表

col1   col2  
a      0 <-- replace all rows and replace with just col1 = 'a'  
a      1 <-- col1='a'  
b      2  
c      3  

所需的結果表

col1  col2  
a      0  
a      1  

如果你是在做SQL,那麼你可能需要TRUNCATE/DELETE在表上做一個然後INSERT進入。

如果您使用LOADand/or IMPORT,它們都有在將數據放入表之前清除表的選項。

您不能一步完成。截斷表所需的鎖定會阻止您同時查詢表。

最好的選擇是聲明一個全域臨時表 (DGTT) 並將所需的行插入其中,截斷源表,然後將 DGTT 中的行插入回源表中。就像是:

declare global temporary table t1 
    as (select * from schema.tableName where ...) 
    with no data
    on commit preserve rows
    not logged;

insert into session.t1 select * from schema.tableName;

truncate table schema.tableName immediate;

insert into schema.tableName select * from session.t1;

引用自:https://dba.stackexchange.com/questions/102072