我在表中有一个查询,然后是select,我需要更新同一个表中的一列。
THE TABLE
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)
)
;
THE QUERY
SELECT CL.* FROM CLIENTE CL
INNER JOIN TEMPORAL TM
ON CL.RUT = TM.RUT;
WHERE CL.FLAG = 'N';
这里我需要在select的行中用'Y'更新“FLAG”列。
答案 0 :(得分:1)
我需要更新同一个表中的列
...
这里我需要更新列" FLAG"与' Y'
我认为你的意思是表CLIENTE
。您可以使用任何这些查询。
使用MERGE INTO
:
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';
使用EXISTS
:
UPDATE cliente CL
SET CL.flag = 'Y'
WHERE EXISTS (SELECT 1
FROM temporal TM
WHERE CL.rut = TM.rut
AND CL.flag = 'N');