4

我想从SELECT语句中获取结果表,然后将其移动到物理文件中。

我希望使用(根据W3Schools):

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename 

不幸的是,根据 IBM 手册(DB2 for i SQL 参考)

SELECT INTO语句生成一个最多包含一行的结果表,并将该行中的值分配给变量。

所以我想也许我可以使用:

INSERT语句向表或视图中插入行该语句有三种形式:
1. INSERTusing fullselect形式用于使用来自其他表或视图的值向表或视图中插入一行或多行。

不幸的是,它似乎对我不起作用。

INSERT INTO <tablename>
FROM ( SELECT (*) FROM <querytableA>
       UNION
       SELECT (*) FROM <querytableB>)

我可以将结果表移动到物理文件中,但要做到这一点,我必须声明一个游标,然后do … while写入物理文件,一次一条记录。我认为这丑陋和不雅,并希望能够使用一个SELECT INTO或一个INSERT INTO声明。

请帮助我用一个优雅的语句将结果表“转储”到物理文件中。

操作系统:IBM i v6.1
数据库:DB2

4

2 回答 2

9

如果要自动创建表,还可以使用以下形式:

CREATE TABLE new_table_name 
AS (SELECT * FROM <querytableA> 
    UNION SELECT * FROM <querytableB>) WITH DATA

请注意,您可以在查询上创建一个视图,以根据需要动态构建结果集。然后可以从任何 HLL 引用该视图作为逻辑文件:

CREATE VIEW new_table_name
AS SELECT * FROM <querytableA>
   UNION SELECT * FROM <querytableB>
于 2011-11-13T17:06:38.533 回答
3

这是正确的语法:

INSERT INTO <dest_table> 
Select * FROM <querytableA>
UNION
Select * FROM <querytableB>

为此,必须已经存在并且具有与和<dest_table>中的列兼容的列。<querytableA><querytableB>

有关详细信息,请参阅“使用选择语句插入行”。

于 2011-11-13T16:38:52.533 回答