在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”
我想你指的是tableCLIENTE
。您可以使用这些查询中的任何一个
使用合并到:
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
语句)?或者只是在查询的输出中?