Oracle 如何使用内部联接在表中插入值?

Oracle 如何使用内部联接在表中插入值?,oracle,Oracle,我试图使用以下查询将数据插入table1.col1 INSERT INTO table1 t1( t1.col1) SELECT t2.col1 FROM table2 t2 WHERE t1.col2= t2.col2; 显然,这是行不通的(逻辑可能有缺陷)。我如何才能达到类似的结果。 如果我不明白,请告诉我。插入表1(col1) 选择t2.col1 来自表2 t2 t1上的内部联接表1 t1.col2=t2.col2 插入表1(col1) 选择t2.col1 来自表1 t1、表2 t2

我试图使用以下查询将数据插入table1.col1

INSERT INTO table1 t1( t1.col1)  
SELECT t2.col1
FROM table2 t2
WHERE t1.col2= t2.col2;
显然,这是行不通的(逻辑可能有缺陷)。我如何才能达到类似的结果。 如果我不明白,请告诉我。

插入表1(col1)
选择t2.col1 来自表2 t2 t1上的内部联接表1 t1.col2=t2.col2

插入表1(col1)
选择t2.col1 来自表1 t1、表2 t2
其中t1.col2=t2.col2

您似乎需要一个
MERGE
语句,其中包含
MATCHED
(对于表1中已经存在的行)和
不匹配
(对于尚未插入表1的行)选项:

MERGE INTO table1 t1
  USING table2 t2
    ON (t1.col2 = t2.col2)
  WHEN MATCHED THEN
    UPDATE SET t1.col1 = t2.col1
  WHEN NOT MATCHED THEN
    INSERT (col1,col2)
    VALUES (t2.col1, t2.col2);

所以,我不是想插入,而是想更新……我知道的愚蠢问题:) 这就是我要找的

update table1 t1 set t1.col1 = (select t2.col1 from table2 t2 where t1.col2 = t2.col2);

你认为t1.col2的值是多少?我不完全确定这有什么关系。请告诉我。您没有“插入到列中”-您可能想更新现有行的列吗?是的。这就是我打算做的。然后使用更新查询?然后删除整个问题,并用你的实际问题开始一篇新文章。我想,但我不能。Stackoverflow不让我这么做。因此,我发布了解决方案。