在 Postgres 中将 WITH 与 CREATE TEMPORARY TABLE AS SELECT ... 一起使用?

pes*_*chü 1 postgresql temporary-tables

我想使用 select 语句创建一个临时表,该语句使用 WITH 语句(而不是 CREATE TEMPORARY TABLE 的 WITH 语句)中指定的临时视图。

例如类似的东西

WITH a AS (
SELECT 1 foo, 2 bar 
), b AS (
SELECT 4 bar, 5 baz
)
CREATE TEMPORARY TABLE foo AS
SELECT * from a JOIN b ON (a.bar=b.bar)
Run Code Online (Sandbox Code Playgroud)

如果我注释掉 CREATE TEMPORARY TABLE 行,这行得通。如何使用SELECT的查询结果创建临时表,而不将临时视图重写为单个查询?

a_h*_*ame 5

WITH 在 CREATE TABLE 之后

CREATE TEMPORARY TABLE foo 
AS
WITH a AS (
SELECT 1 foo, 2 bar 
), b AS (
SELECT 4 bar, 5 baz
)
SELECT * from a JOIN b ON (a.bar=b.bar)
Run Code Online (Sandbox Code Playgroud)

请注意,以上将导致“错误:多次指定列“bar””-但我假设您在实际查询中使用了更好的(不同的)列名称。

  • @peschü:解决示例中重复列名的简单方法:`... SELECT * from a JOIN b USING (bar);` (2认同)