美好的一天,
我有一张表,其中包含一些应删除的记录。我想跟踪已删除的记录并将这些记录放在新表中。我想做以下事情:
SELECT * INTO TEMP FROM TABLE WHERE criteria < 1;
然后使用DELETE查询删除这些记录。稍后我想做一个新的SELECT查询:
SELECT * INTO TEMP FROM TABLE WHERE new_criteria > 2;
然后删除这些记录。我将只从一个表开始工作,只将选定的记录放入同一个新表中(仅供参考)。
谢谢!
答案 0 :(得分:1)
INSERT INTO temp (SELECT * FROM tbl WHERE criteria < 1);
答案 1 :(得分:1)
临时表的结构与原始结构相同吗?如果temp不存在,你可能想要这样做。
create table temp as select * from TABLE where criteria <1
答案 2 :(得分:0)
如果您使用的是Postgresql 9.3您也可以在一个命令中执行所有操作:
WITH deleted_rows AS (
DELETE FROM tbl
WHERE criteria<1
RETURNING *
)
INSERT INTO temp
SELECT * FROM deleted_rows;
(见http://www.postgresql.org/docs/9.3/static/queries-with.html#QUERIES-WITH-MODIFYING)