我的Oracle数据库中有几个表,如下所示
**IM_FP**
FP_ID
FP_NAME
FP_STATUS
**IM_FP_DTL**
FP_DTL_ID
FP_ID
IM_ID
FP_DATE
FP_ID FP_NAME FP_STATUS
1 ABC TRUE
2 DEF TRUE
3 GHI TRUE
4 TEC TRUE
5 KEC TRUE
FP_DTL_ID FP_ID IM_ID FP_DATE
1 1 1 1-JAN-1996
2 2 1 10-JAN-1996
3 3 1 2-FEB-1996
4 4 2 1-JAN-1996
5 5 3 2-JAN-2010
两个表之间存在1-1关系。但是IM_ID可以在FP_DTL表中重复,并将IM_FP表中的FP_STATUS值更新为所有记录的false,但是对于具有MAX的记录(FP_DTL_ID),则更新为True。
例如在上面的场景中,前两个记录的IM_FP表中的FP_STATUS将为FALSE,第三个记录将为TRUE
Select IM_ID from FP_DTL GROUP BY IM_ID HAVING COUNT(IM_ID)>1
会给我所有重复的AM_ID。
请帮忙
答案 0 :(得分:0)
怎么样:
UPDATE IM_FP
SET FP_STATUS = 'TRUE'
WHERE FP_ID IN
(SELECT MAX(FP_DTL_ID)
FROM IM_FP_DTL
GROUP BY IM_ID)
AND (FP_STATUS IS NULL OR FP_STATUS != 'TRUE');
UPDATE IM_FP
SET FP_STATUS = 'FALSE'
WHERE FP_ID NOT IN
(SELECT MAX(FP_DTL_ID)
FROM IM_FP_DTL
GROUP BY IM_ID)
AND (FP_STATUS IS NULL OR FP_STATUS != 'FALSE');