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 joines_goods_option_old b2 on
a.goodsNo = b2.goodsno AND a.optionValue2 = b2.opt2 inner joines_goods_option_old b3 on
a.goodsNo = b3.goodsno AND a.optionValue3 = b3.opt3set 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를 하는것을 추천드립니다.
답변을 작성하시기 전에 로그인 해주세요.