【问题标题】:PostgreSQL: Select several queries into same tablePostgreSQL:在同一个表中选择几个查询
【发布时间】:2025-11-30 07:50:01
【问题描述】:

早安,

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

SELECT * INTO TEMP FROM TABLE WHERE criteria < 1;

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

SELECT * INTO TEMP FROM TABLE WHERE new_criteria > 2;

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

谢谢!

【问题讨论】:

    标签: postgresql select select-into


    【解决方案1】:
    INSERT INTO temp (SELECT * FROM tbl WHERE criteria < 1);
    

    【讨论】:

    • 括号在这里只是噪音,顺便说一句。
    【解决方案2】:

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

    create table temp as select * from TABLE where criteria <1
    

    【讨论】:

    • 谢谢,这也有帮助!!
    【解决方案3】:

    如果您使用的是 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

    【讨论】:

      最近更新 更多