[SQL] WHERE절에 다른 테이블의 컬럼을 연동시키기

SQL WHERE절에 다른 테이블의 컬럼을 연동?

  제목만 봐서는 감이 잘 안 잡히실겁니다. 제가 봐도 이 제목은 똥이지만, 밤을 새서 작업하는 중이라 어쩔 수가 없네요... 이해를 돕기 위해 제가 처한 상황을 예시로 들어보겠습니다.

  현재 저는 세 개의 테이블이 있습니다.
`md`: `business` 테이블의 idbiz_id 외래 키로 갖는 테이블
`business`: `category` 테이블의 idcat 외래 키로 갖는 테이블
`category`: 카테고리 테이블
  실제론 더 다양한 컬럼들이 있지만, 필요한 건 위의 정보가 다 입니다. 제가 하려는건,
`md` 테이블의 call_count를 바꿔야 한다.
조건 컬럼은 `md`.biz_id이다.
biz_idid로 갖는 `business` 테이블의 cat이 특정 값과 일치해야 한다.
  과연 어떻게 해야 저걸 정상적으로 실행시킬 수 있을지 찾아보다가 비교적 쉽게 답을 얻었습니다. 아래와 같이 하시면 됩니다.


UPDATE md
SET call_count = #{callCount}
WHERE biz_id = (SELECT id AS biz_id FROM business WHERE cat = #{cat}

  해석하자면, `business`.cat이 #{cat}에 해당하는 레코드의 `business`.idbiz_id로 명명해 가져온 뒤, `md`.biz_id를 가져온 id와 비교해 일치하는 레코드의 `md`.call_count를 #{callCount}로 변경하라는 의미입니다.

  참 쉽죠? 제가 지금 글을 개떡같이 써서 알아보기 힘드실지도 모르지만, 한 번 직접 실행하며 곱씹어보시면 이해가 금방 되실겁니다.

  참고: http://stackoverflow.com/questions/14389891/select-a-value-from-specific-table-with-where-clause-on-another-table#14389939

댓글

이 블로그의 인기 게시물

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

USB를 뒤는 괜찮은데 앞에 꽂으면 인식이 힘들다?

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭