组装两个没有共同点的sql查询结果

时间:2015-04-15 16:53:29

标签: sql oracle merge

如果从两个没有共同点的不同表中检索这些值,我如何将值插入表中? 从第一个表中,我将只检索(SELECT)一个值,其余的值将从第二个表中检索。

我想从第一个表中检索第一个值,从第二个表中检索剩余的值,然后将所有这些值返回到我想要执行的INSERT中。

编辑:这是结构的一个例子:

以下是表格。我希望这很清楚。请随时向我询问更多详情。

CREATE TABLE table1
(id int,  productName  varchar(7),  description  varchar(55))
;

CREATE TABLE table2
(id int,  productName  varchar(7))
;

这就是我的尝试:

INSERT INTO table2 (`id`,`productName`)
SELECT COALESCE(Max(id + 1), 0) 
FROM table2 
UNION 
SELECT productName 
FROM table1

这显然会给我一个错误,但至少我希望这更清楚。

1 个答案:

答案 0 :(得分:0)

使用内嵌视图获取最大当前ID Table2。然后用Table1 CROSS JOIN生成笛卡尔积。我认为您需要为新记录添加不同的ID,因此我建议您增加每行的派生最大ID。

INSERT INTO table2 (id,productName) 
SELECT  t2.max_id + rownum
       , t1.productName   
FROM ( select COALESCE(Max(t2.id), 0) as max_id 
       from table2 ) t2
     CROSS JOIN  table1 t1