안녕하세요.
인포믹스는 업데이트되는 테이블을 서브쿼리를
통하여 조건으로 설정할 수 없습니다... T_T
즉 아래의 것을 다음과 같이 하면 될 것 같은 데
오류가 발생할 것입니다.
update an set (usrid,an_chk)=('gagamel','1')
where an_chk = '0' and rgn_code = '981' and
a_num = (select max(a_num) from an where an_chk = '0' and
rgn_code = '981');
여기서 a_num이 Primary Key라면
update an set (usrid,an_chk)=('gagamel','1')
where a_num = (select max(a_num) from an
where an_chk = '0' and rgn_code = '981');
그러므로 결국 두개의 문장으로 나누어서 실행해야 합니다... T_T
사용하시는 언어가 무엇인지 몰라서 그냥 슈더코드로...
? = select max(a_num) from an where an_chk = '0' and rgn_code '981';
update an set (usrid,an_chk)=('gagamel','1')
where a_num = ?
이것이 불편하다면 Stored Procedure로 만들어서 한번에
실행시키는 것도 하나의 방법이라고 생각됩니다.
그럼 수고하세요.
>>정재익 님께서 쓰시길<<
:: "update an set (usrid,an_chk)=('gagamel','1')
:: where an_chk='0' and rgn_cod='981' and max(a_num)"
::
:: 개인적으로 Informix 를 설치해본 정도이고 사용해 보지는 않아서 정확한 답변인지는 모르겠지만 max(a
:: _num) 이라는 aggregate 함수를 사용하는 부분에서 그냥 subquery 로 (select max(a_num) from table_n
:: ame) 이런식으로 subquery 로 명시해 주면 되지 않을까요?
::
:: >>가가멜 님께서 쓰시길<<
::
:: :: update 문에서 Sub Query를 하려고 하는데여..
:: :: an 테이블에 usrid, an_chk, a_num, rgn_cod 네개의 필드가 있구여...
:: :: a_num에는 회원 등록번호가 30만개 정도 등록이 되어 있습니다.
:: :: an_chk는 회원등록번호의 사용여부를 판별하는 필드인데 1이면 사용중인 번호고
:: :: 0이면 사용해도 괜찮은 필드인데...
:: :: 업데이트를 할때 a_num 의 내용중에서 제일 큰 값을 구해야 되는데
:: :: 잘 안되네여..
:: :: "update an set (usrid,an_chk)=('gagamel','1')
:: :: where an_chk='0' and rgn_cod='981' and max(a_num)" <- 이렇게 명령을
:: :: 썼는데 다른 건 다 되는데 max(a_num) 을 같이 써주면 에러가 나네여.. ㅠ.ㅠ
:: :: 업데이트 할때 a_num의 max 값을 조건으로 주려면 어떻게 해야 하는지여..
:: :: 조언 좀 부탁드릴께여... 그럼...
:: ::
|