【问题标题】:How to create temp table in postgresql with values and empty column如何在 postgresql 中使用值和空列创建临时表
【发布时间】:2016-12-15 07:46:42
【问题描述】:

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

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

我做错了什么?

如何创建一个临时表,其中一些列具有使用选择查询的值而其他列为空?

【问题讨论】:

    标签: sql postgresql temp-tables


    【解决方案1】:

    只需选择一个 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是一个保留关键字,所以如果你想用它作为标识符,你必须使用双引号。但是,最好找到一个不同的名称。

    对于CREATE TABLE AS SELECT,也无需将SELECT 语句放在括号之间。

    【讨论】:

      【解决方案2】:

      您的错误来自您在 WHERE 子句附近的陈述。

      这应该可行:

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

      【讨论】:

        【解决方案3】:

        试试这个。

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

        【讨论】:

        • cast( '0' as integer)可以简化为0
        • 是的。它可以。
        猜你喜欢
        • 1970-01-01
        • 2021-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-26
        • 2021-09-08
        • 2020-10-31
        • 1970-01-01
        相关资源
        最近更新 更多