쿼리질문 0 5 1,275

by BadGod [SQL Query] [2017.02.23 09:20:30]


x테이블    
컬럼명 id a
데이터 1 가나다자..
2 나다라사..
3 라마바파..
: :
     
y테이블    
컬럼 b  
데이터  
 
 
 
 
:  
     
질문: b컬럼에 있는 문자가 a컬럼에 있으면 해당 row는 한번만 select 하기.
원하는 결과:    
  id a
  1 가나다자..
  2 나다라사..
  3 라마바파..
     
SELECT x.id, x.a    
     FROM x, y    
     WHERE y.b LIKE '%'||y.b||'%'  
;    
     
위 코드로 실행시    
나오는 결과:    
  id a
  1 가나다자..
  2 나다라사..
  1 가나다자..
  2 나다라사..
  2 나다라사..
  3 라마바파..
  3 라마바파..
  3 라마바파..

 

 


위코드를 어떻게 수정하면 제가 원하는 결과가 나올까요?

감사합니다.

by 랑에1 [2017.02.23 10:40:42]
SELECT id, MIN(a) a
FROM 
(
SELECT X.id, X.a FROM X, Y
WHERE X.a LIKE '%' || Y.b || '%'
)
GROUP BY id 
ORDER BY id 

id가 유니크하다면 그냥 하나만 남기면 될 것 같네요

 


by BadGod [2017.02.23 10:53:16]

아, 그런방법이 있었네요.ㅎㅎ

감사합니다.^^


by jkson [2017.02.23 11:07:38]

성능상으로는 아래 형태가 살짝 더 좋지 않을까 하는데 고려해보세요.

SELECT * 
  FROM X
 WHERE EXISTS (SELECT 1
                 FROM Y
                WHERE INSTR(X.A,Y.B) > 0)   

 


by 랑에1 [2017.02.23 11:12:31]

이렇게 하고 싶었어요 ㅋㅋ


by BadGod [2017.02.23 12:40:42]

네, 감솨감솨^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입