我有三张桌子:
Table-1: Column1 | Column2 | Column 3
Table-2: Column4 | Column5 | ColumnUpdate
Table-3: Column7 | Column8
我需要根据Table-1的某些条件将表-2中的一些行复制到表-3中:
我的insert语句如下所示:
INSERT INTO Table-3 (
Column7,
Column8)
SELECT Table-2.COLUMN4, Table-2.COLUMN5
FROM Table-2 INNER JOIN Table-1
ON Table-2.COLUMN4 = TABLE-1.Column1;
但是我想要将选择行的列“ColumnUpdate”(表-2)更新为“1”。
所以我选择了一些行,并立即想要将该行中的进程列更新为“1”。
我不知道该怎么做。我看到了一些带有“OUTPUT”子句或“UPDATE FOR”的例子,但我并不完全知道如何在我的陈述中使用它们。
答案 0 :(得分:1)
MERGE
INTO target_table t1
USING (SELECT col1, col2
FROM source_table
WHERE //conditions here) s1
ON (t1.id = s1.id)
WHEN MATCHED THEN
UPDATE SET column_update = '1'
WHEN NOT MATCHED THEN
INSERT (col1, col2)
VALUES (s1.col1, s1.col2)
WHERE (// condition here);
更新
BEGIN
FOR temp_var IN (
SELECT * from table_a
WHERE table_a.col1 = table_b.col1)
LOOP
// INSERTING INTO TARGET TABLE
INSERT INTO table_b
VALUES(temp_var.col1, temp_var.col2);
// UPDATING SOURCE TABLE
UPDATE table_a
SET status = 'COPIED'
WHERE col1 = temp_var.col1;
END LOOP;
END;