在oracle中选择后更新行

在oracle中选择后更新行,oracle,Oracle,我在一个表中有一个查询,然后选择,我需要更新同一个表中的一列 桌子 CREATE TABLE CLIENTE ( RUT VARCHAR2(14), FONO1 VARCHAR(20), FONO2 VARCHAR(20), FONO3 VARCHAR(20), FONO4 VARCHAR(20), FONO5 VARCHAR(20), FONO6 VARCHAR(20), FLAG

我在一个表中有一个查询,然后选择,我需要更新同一个表中的一列

桌子

CREATE TABLE CLIENTE
(
    RUT           VARCHAR2(14), 
    FONO1   VARCHAR(20),
    FONO2   VARCHAR(20),
    FONO3   VARCHAR(20),
    FONO4   VARCHAR(20),
    FONO5   VARCHAR(20),
    FONO6   VARCHAR(20),
    FLAG    CHAR(1)
)
;

CREATE TABLE TEMPORAL
    (
        RUT           VARCHAR2(14), 
        FONO1   VARCHAR(20),
        FONO2   VARCHAR(20),
        FONO3   VARCHAR(20),
        FONO4   VARCHAR(20),
        FONO5   VARCHAR(20),
        FONO6   VARCHAR(20),
        FLAG    CHAR(1)
    )
    ;
询问

SELECT CL.* FROM CLIENTE CL
INNER JOIN TEMPORAL TM
ON CL.RUT = TM.RUT;
WHERE CL.FLAG = 'N';
在这里,我需要在select的行中用“Y”更新列“FLAG”

我需要更新同一表中的一列,然后

这里我需要用“Y”更新列“FLAG”

我想你指的是table
CLIENTE
。您可以使用这些查询中的任何一个

使用
合并到

MERGE INTO CLIENTE m
USING 
(
    SELECT CL.RUT, CL.FLAG FROM CLIENTE CL
    INNER JOIN TEMPORAL TM
    ON CL.RUT = TM.RUT
    WHERE CL.FLAG = 'Y'
) c ON ( m.RUT = c.RUT ) 
WHEN matched then UPDATE SET m.FLAG = 'N';
使用
存在

UPDATE cliente CL
SET    CL.flag = 'Y'
WHERE  EXISTS (SELECT 1
               FROM   temporal TM
               WHERE  CL.rut = TM.rut
                      AND CL.flag = 'N');  
“更新”是什么意思?基本表中的实际更新(一个
update
MERGE
语句)?或者只是在查询的输出中?