db2查询,显示为另一个表中的每个值重复的记录

时间:2015-09-15 13:00:21

标签: sql select insert db2

我需要将记录插入例如表1通过为一个参考表中的每个记录创建表中每个现有记录的新实例,例如参考表1.

所以,例如......

表1

ID = 1, Name = John, Ref Table 1 ID = null

参考表1

ID = 1, Name = Grade 1
ID = 2, Name = Grade 2

来自SQL的结果 表1

ID = 1, Name = John, Ref Table 1 ID = 1
ID = 2, Name = John, Ref Table 1 ID = 2

甚至

ID = 1, Name = John, Ref Table 1 ID = null
ID = 2, Name = John, Ref Table 1 ID = 1
ID = 3, Name = John, Ref Table 1 ID = 2

这是否可以使用标准SQL?

想要在一个查询中获取所有内容,因为现在看来我必须为每个ref table 1记录重复它。

由于

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

  1. 为插入结果创建表格:

    CREATE TABLE to_insert( ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) ,Name VARCHAR(100) ,Ref_Table1_ID INTEGER ,PRIMARY KEY(ID) ,FOREIGN KEY(Ref_Table1_ID) REFERENCES(ref_table_1) );

  2. 执行插入查询:

    INSERT INTO to_insert(Name, Ref_Table1_ID) SELECT t1.Name, COALESCE(t1.Ref_Table1_ID, rt1.ID) Ref_Table1_ID FROM table_1 t1 FULL OUTER JOIN ref_table_1 rt1 ON (t1.Ref_Table1_ID = rt1.ID)

答案 1 :(得分:0)

也许我错过了什么,但为什么不做呢:

SELECT * FROM tbl_1, tbl_2

结果将是:

tbl_1.ID    tbl_1.Name  Ref Table ID    tbl_2.ID    tbl_2.Name
1           John                        1           Grade 1
1           John                        2           Grade 2

tbl_1

ID  Name    Ref Table ID
1   John    NULL

和tbl_2

ID  Name
1   Grade 1
2   Grade 2

最后,只需选择所需的列。