PostgreSQL:在同一个表中选择几个查询

Posted

技术标签:

【中文标题】PostgreSQL:在同一个表中选择几个查询【英文标题】:PostgreSQL: Select several queries into same table 【发布时间】:2013-10-14 07:56:39 【问题描述】:

早安,

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

SELECT * INTO TEMP FROM TABLE WHERE criteria < 1;

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

SELECT * INTO TEMP FROM TABLE WHERE new_criteria > 2;

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

谢谢!

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于PostgreSQL:在同一个表中选择几个查询的主要内容,如果未能解决你的问题,请参考以下文章

在PostgreSQL中选择N个匹配条件的随机行

使用 PostgreSQL 从许多表中选择并合并相同的属性

从具有加权行概率的 PostgreSQL 表中选择随机行

PostgreSQL - 从连接表中选择聚合列并使用它来求和

如何为复杂的 sql 查询获取中间数据。 PostgreSQL

PostgreSQL PL/pgSQL:存储在表中的查询(营业时间)