Dean.Koo
222
2018-05-11 14:29:47
5
1063

mysql 질문 드립니다. update 쿼리 날리기 전 직접적인 비교를 하고 싶은데... 다중 select인듯해요


예를 들어 국내휴대폰번호 11자리로 컬럼을 통일하고 싶어, 이런 궁금증을 적어봅니다.


update member set cellphone = lpad(cellphonem, 11, '0') where cellphone !=null;


위 업데이트 쿼리는 cellphone 숫자를 11자리로 맞추게끔 왼쪽에 0을 넣으려고 합니다.

조건은 cellphone에 값이 있을 때만이요.


이 쿼리를 실행했을 때,

기존 cellphone컬럼의 숫자들과 update된 cellphone컬럼의 숫자를 비교하고싶어요



음.. 대충


select cellphone, fix_cellphone from member where

(select ... 이런식으로 나갈거같은데.. 


어떻게 해야 가능할까요?

0
0
  • 답변 5

  • 꿀두
    1k
    2018-05-11 14:38:08

    쿼리가 돌기전 서비스단에서 parameter로 따로 저장을 해두는 상태인가요?

    그게 아니라면 update 하고나면 기존의 폰넘버는 어디에 남나요? 

    혹시 한 쿼리문에서 update와 select를 하고싶으시단건 아니겠죠?

    0
  • Dean.Koo
    222
    2018-05-11 14:40:37

    한 쿼리문 update 를 하기 전에 update된 cellphone 컬럼과 기존 cellphone 컬럼을 확인하고 싶은거에요. 

    당연히 기준은 실제 update를 돌리지 않는다는 기준이구요.

    0
  • 꿀두
    1k
    2018-05-11 14:46:59

    Dean.Koo

    1.서비스단에서 쿼리돌리기 전에 파라미터값으로 변경전 폰넘버 저장

    2.update 이후 비교하는 select 쿼리 날리면서 파라미터값으로 서비스단에서 저장해뒀던 변경전 폰넘버 날려서 비교함

    ////

    1. 테이블에서 이전 폰넘버 저장하는 컬럼을 한개추가

    2. update 이후 select 하면서 변경 전후 폰넘버 비교

    ///

    1. 프로시저이용



    0
  • kolol
    1k
    2018-05-11 16:05:56

    mybatis 같은걸 쓰신다면 selectKey 로 먼저 select 하신다음에 update 진행하면 될거같네요

    0
  • Dean.Koo
    222
    2018-05-11 21:17:30

    @kololhttps


    아뇨 그냥 mysql에서 돌리려고합니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.