update 문 일괄 적용

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
update 문 일괄 적용

QA

update 문 일괄 적용

본문

안녕하세요 

특정 값이 동일하다면 

나머지 값들이 타 테이블에서 가져와서 원 테이블에 업데이트되는 쿼리문을 작성하고자 합니다.

 


update es_goodsOption_test a
set a.xopt1 = (select b.xopt1 from es_goods_option_old b), 
    a.xopt2 = (select b.xopt2 from es_goods_option_old b), 
    a.xopt3 = (select b.xopt3 from es_goods_option_old b)
where a.goodsNo in (select goodsno from es_goods_option_old b) AND a.optionValue1 in (select b.opt1 from es_goods_option_old b)

 

이렇게 마이어드민에서 쿼리를 날리려 하니

#1064 오류가 나오네요 

필드명이나 컬럼 타입이 틀리진 않았습니다.

 

update 문을 일괄적으로 사용하는 다른 쿼리문이 있을지,, 아니면 저 쿼리문을 수정하면 될지,, 

 

알려주시면 감사하겠습니다.

이 질문에 댓글 쓰기 :

답변 3

update es_goodsOption_test a
inner join es_goods_option_old b on  a.goodsNo = b.goodsno AND a.optionValue1 = b.opt1 
inner join es_goods_option_old b2 on a.goodsNo = b2.goodsno AND a.optionValue2 = b2.opt2 
inner join es_goods_option_old b3 on a.goodsNo = b3.goodsno AND a.optionValue3 = b3.opt3
set
a.xopt1 = b.xopt1,
a.xopt2 = b2.xopt2,
a.xopt3 = b3.xopt3

 

 

 

 


 

해결했습니다.


update es_goodsOption_test a
set a.xopt1 = (select b.xopt1 from es_goods_option_old b where a.goodsNo = b.goodsno AND a.optionValue1 = b.opt1), 
    a.xopt2 = (select b.xopt2 from es_goods_option_old b where a.goodsNo = b.goodsno AND a.optionValue1 = b.opt1), 
    a.xopt3 = (select b.xopt3 from es_goods_option_old b where a.goodsNo = b.goodsno AND a.optionValue1 = b.opt1)

자체적으로 where 절을 추가하면 되네요~

조금 위험한 방법같은데

사실은 데이터 자체를 한번 불러오고

루프를 돌려가며 해당 데이터를 다시 update하는게 가장 이상적입니다.

속도 측면에선 다소 느릴수 있지만

정확하게 데이터를 보존해서 업데이트하는 것도 중요하니

원래의 데이터를 불러와서 루프를 돌려가며 update를 하는것을 추천드립니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 37
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT