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 - 从连接表中选择聚合列并使用它来求和