【问题标题】:Temporary tables and AS statement usage临时表和AS语句的使用
【发布时间】:2013-07-02 08:37:38
【问题描述】:

如果我有疑问,请说:

SELECT *
FROM ( SELECT fields 
       FROM tables 
       WHERE condition 
     ) 
AS TEMP_TABLE

上述查询的结果是否保存在名为 TEMP_TABLE 的临时表中,以便我以后可以对其执行另一个查询?下面的查询在使用DB2时会执行成功吗?

SELECT fields 
FROM TEMP_TABLE 
WHERE condition

【问题讨论】:

  • 您的数据库可能会将结果存储为临时表,它可能会对其进行流式传输,或者在您的情况下,它可能会在没有子查询的情况下重写查询。在任何情况下,您都不能在以后的查询中引用子查询结果。
  • 没有。在这种情况下,TEMP_TABLE 只是您的子查询的别名
  • 你用的是什么关系型数据库?
  • 我正在使用 DB2.. 啊,所以如果我必须访问从 TEMP_TABLE 返回的结果,我必须自己创建一个临时表,使用 INSERT INTO 插入结果并从该表中选择?跨度>

标签: sql db2


【解决方案1】:

答案是否定的,它只是子查询的别名。

如果你以后想使用它,你必须显式地创建它。

【讨论】:

    【解决方案2】:

    您可以通过以下方式创建临时表。

    CREATE TEMPORARY TABLE temp_table AS (
    SELECT fields 
           FROM tables 
           WHERE condition
    );
    

    然后您可以从临时表中检索数据,如下所示。

    SELECT * FROM temp_table
    

    【讨论】:

    猜你喜欢
    • 2010-11-23
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多