您有一个基本问题。你想把这个值设置成什么日期?我猜第一个。
还有一些其他语法问题。以下可能是你想要什么:
UPDATE SAMPLE
SET C_DATE = TO_DATE('01/01/2013', 'MM/DD/YYYY')
WHERE EXISTS (SELECT *
FROM MEMBER_A A JOIN
S_NEW B
ON A.MEM_NBR = B.MEM_NBR AND
WHERE B.M_ID IN (1111,2222,3333) AND
A.L_TEST BETWEEN TO_DATE('01/01/2013', 'MM/DD/YYYY') and TO_DATE('12/31/2013', 'MM/DD/YYYY') AND
B.ID = SAMPLE.ID
);
编辑:
在Oracle中,你可以做超优雅的两个子查询的解决方案:
UPDATE SAMPLE
SET C_DATE = (SELECT max(A.L_TEST)
FROM MEMBER_A A JOIN
S_NEW B
ON A.MEM_NBR = B.MEM_NBR AND
WHERE B.M_ID IN (1111,2222,3333) AND
A.L_TEST BETWEEN TO_DATE('01/01/2013', 'MM/DD/YYYY') and TO_DATE('12/31/2013', 'MM/DD/YYYY') AND
B.ID = SAMPLE.ID
)
WHERE EXISTS (SELECT *
FROM MEMBER_A A JOIN
S_NEW B
ON A.MEM_NBR = B.MEM_NBR AND
WHERE B.M_ID IN (1111,2222,3333) AND
A.L_TEST BETWEEN TO_DATE('01/01/2013', 'MM/DD/YYYY') and TO_DATE('12/31/2013', 'MM/DD/YYYY') AND
B.ID = SAMPLE.ID
);
的max()
的只是要确定只返回一个值。
1)请格式化您的SQL。 2)这是什么DMBS? –
Oracle数据库 – user3251591
你会得到什么错误? –