Select
從表中替換為 SELECT
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
進入。如果您使用
LOAD
and/orIMPORT
,它們都有在將數據放入表之前清除表的選項。
您不能一步完成。截斷表所需的鎖定會阻止您同時查詢表。
最好的選擇是聲明一個全域臨時表 (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;