0

再会,

我有一张表,里面有一些应该删除的记录。我想跟踪删除的记录并将这些记录放在新表中。我想做以下事情:

SELECT * INTO TEMP FROM TABLE WHERE criteria < 1;

然后用 DELETE 查询删除这些记录。稍后我想做一个新的 SELECT 查询:

SELECT * INTO TEMP FROM TABLE WHERE new_criteria > 2;

然后也删除这些记录。我将只使用一张表,并将选定的记录放入同一个新表中(仅供参考)。

谢谢!

4

3 回答 3

1
INSERT INTO temp (SELECT * FROM tbl WHERE criteria < 1);
于 2013-10-14T08:00:38.340 回答
1

您的临时表是否与原始表具有相同的结构。如果临时不存在,您可能想要这样做。

create table temp as select * from TABLE where criteria <1
于 2013-10-14T08:11:06.083 回答
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

于 2013-10-14T10:32:49.923 回答