ORA-01427: single-row subquery returns more than one row
이런.. 에러가 나는데요`~
이걸 해결하려면.. 어떻게 해야 할까요?
쿼리는.. 이전에 사용하고 있는 테이블 XFORG_PERSON과 XFORG_PERSON_INFO를
조인하여 TB_T301M의 ID와 PASSWD를 넣으려고 합니다.
XFORG_PERSON의 NFUID와 XFORG_PERSON_INFO의 NFUID를 연결해서
사용하고.. XFORG_PERSON의 EXPIRE_TIME이 가장 최근것의 아이디와 패스워드를
업데이트 하는겁니다.
쿼리문은 아래와 같습니다.
-- 아이디 업데이트
UPDATE TB_T301M
SET SF_ID = ( SELECT SUBSTR(A.NFUID, 1, 14)
FROM XFORG_PERSON A, XFORG_PERSON_INFO B, TB_T301M C
WHERE A.NFUID = B.NFUID
AND A.EXPIRE_TIME IN ( SELECT MAX(EXPIRE_TIME) FROM XFORG_PERSON )
AND REPLACE(C.MEMBER_ID, '-', '') = B.LICENSE)
WHERE REPLACE(MEMBER_ID, '-', '') IN ( SELECT B.LICENSE
FROM XFORG_PERSON A, XFORG_PERSON_INFO B, TB_T301M C
WHERE A.NFUID = B.NFUID
AND A.EXPIRE_TIME IN ( SELECT MAX(EXPIRE_TIME) FROM XFORG_PERSON )
AND REPLACE(C.MEMBER_ID, '-', '') = B.LICENSE )
-- 패스워드 업데이트
UPDATE TB_T301M
SET PASSWD = ( SELECT A.USER_PASSWD
FROM XFORG_PERSON A, XFORG_PERSON_INFO B, TB_T301M C
WHERE A.NFUID = B.NFUID
AND A.EXPIRE_TIME IN ( SELECT MAX(EXPIRE_TIME) FROM XFORG_PERSON )
AND REPLACE(C.MEMBER_ID, '-', '') = B.LICENSE)
WHERE REPLACE(MEMBER_ID, '-', '') IN ( SELECT B.LICENSE
FROM XFORG_PERSON A, XFORG_PERSON_INFO B, TB_T301M C
WHERE A.NFUID = B.NFUID
AND A.EXPIRE_TIME IN ( SELECT MAX(EXPIRE_TIME) FROM XFORG_PERSON )
AND REPLACE(C.MEMBER_ID, '-', '') = B.LICENSE )