하얀종이
208
2019-12-30 10:54:02 작성 2019-12-30 14:09:25 수정됨
4
445

[SQL] IN을 사용할 때 완벽하게 일치하는것만 가져오는게 있을까요?


안녕하세요

쿼리문을 작성하다가 궁금해서 여쭤봅니다..


우리나라 도시명, 시군구명, 법정동명 관련하여 테이블 한 개 존재하고

비교해야 하는 테이블에 법정동명이 여러개가 있습니다.

문제는 비교해야하는 테이블에 있는 법정동명을 가진 도시가 여러개 있습니다.

(비교해야 하는 테이블에는 법정동명 정보밖에 없네요..)

ex) 인천광역시 남동구 논현동 , 서울특별시 강남구 논현동


IN안에 있는 여러 법정동명들을 꼭 전부 다 포함하는 도시명 한개만 뽑아오고 싶은데

IN을 쓰면 IN안에 있는 값들 중 한개라도 포함되면 해당 시 전부 가져오네요...


IN을 사용하지 말고 다른방법을 써야하나요?


SELECT *
   FROM 주소테이블 A,
              (SELECT DISTINCT BJDONG_NM FROM 비교테이블 WHERE BJDONG_NM IS NOT NULL) B
WHERE A.BJDONG_NM IN B.BJDONG_NM;


이런식으로 조회를 하면 충북 인천 경기 경북 광주 서울 다나옵니다..


여기에서 비교테이블에 있는 법정동명을 모두 포함하고있는

시도명 한개만 나오는 SQL을 사용하고 싶네요

0
  • 답변 4

  • 쥬라기
    378
    2019-12-30 11:19:12

    in 자체가 포함형태로 여러개를 찾을 때 검색이라 or이랑 결과가 동일합니다.

    테이블에 있는 법정동명에 법정구까지 정확하게 일치해야 하는 형태로 검색하셔야 하지 않을까 싶습니다.

  • 하얀종이
    208
    2019-12-30 13:29:10

    쥬라기 님

    답변 달아주셔서 감사합니다..

    비교해야 하는 테이블에는 시군구명 데이터가 없어서요 ㅎㅎ

    비교해야 하는 테이블에 법정동 정보밖에 없습니다... 근데 어느 도시인지는 알고있어서

    한 시에서 법정동명을 같이 쓰는 경우는 없더라고요

    다른 시끼리는 겹치는 경우가 있고요 ㅎㅎ


    IN이 OR의 효과를 낸다면 IN처럼 범위지정해서 AND 효과를 내는 건 뭐 없을까요???

    아니면 IN말고 아예 돌아가야 될까요? 쿼리 자체가?

    어렵네요 ㅜㅜ

  • 인라이너
    535
    2019-12-30 13:34:53

    자체 구성한 DB 가 아니라면 도-시-구-동 같은 관계를 가진 테이블이 있을텐데, 선택한 도시의 id and 동 이름 으로 조회된 결과를 찾으면 될겁니다.

    만약 자체 구성한 DB 라면 테이블 설계를 변경하거나 별도의 자료구조를 통해 동-도시의 연결 관계를 저장해두어야겠네요.

  • 하얀종이
    208
    2019-12-30 13:45:06

    인라이너 님

    네 제가 자체구성한 테이블이 아니라 한 테이블에 시도, 시군구, 법정동, 행정동 정보가 모두 있습니다

    다른 연관관계를 가진 테이블이 없는거 같네용

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