2016-12-15 94 views
1

我对postgresql很新。我想创建一个包含一些值和空列的临时表。这是我的查询,但它没有执行,但在,(逗号)处出现错误。如何使用值和空列在postgresql中创建临时表

CREATE TEMP TABLE temp1 
AS (
SELECT distinct region_name, country_name 
from opens 
where track_id=42, count int) 

我做错了什么?

如何使用select查询和其他列作为空创建一个具有值的列的临时表?

回答

5

只需选择一个NULL值:

CREATE TEMP TABLE temp1 
AS 
SELECT distinct region_name, country_name, null::integer as "count" 
from opens 
where track_id=42; 

演员到一个整数(null::integer)是必要的,否则的Postgres不知道使用什么数据类型为额外的列。如果你想提供一个不同的值,你当然可以使用例如42 as "count"而不是

请注意,count是一个保留关键字,因此如果要将其用作标识符,则必须使用双引号。然而,找到一个不同的名字会更好。

在括号之间也没有必要将SELECT语句用于CREATE TABLE AS SELECT

1

您的错误来自语句附近WHERE语句。

这应该工作:

CREATE TEMP TABLE temp1 AS 
(SELECT distinct region_name, 
     country_name, 
     0 as count 
FROM opens 
WHERE track_id=42) 
1

试试这个。

  CREATE TEMP TABLE temp1 AS 
      (SELECT distinct region_name, 
        country_name, 
        cast('0' as integer) as count 
      FROM opens 
      WHERE track_id=42); 
+0

'cast('0'as integer)'可以简化为'0' –

+0

是的。有可能。 –