2013-08-05 4 views
2

초보자를 SQL로 반환합니다. 친절하게 도와주세요.'LIKE'연산자를 사용하여 여러 결과를 반환하는 하위 쿼리

여러 패턴의 필드 중 하나에 패턴이있는 레코드의 수를 계산해야합니다. 하나의 패턴에 대해이를 수행하는 방법을 알고 있지만 하위 패턴에서 여러 패턴이 나오는 경우 어떻게 각 패턴의 수를 계산합니까? Oracle을 사용하고 있습니다. 나는 예를 들어 설명하려고 노력할 것이다.

SELECT count(*) FROM TableA 
WHERE 
TableA.comment LIKE '%world%'; 

이제이 코드는 TableA.comment 필드에 'world'가있는 레코드 수를 반환합니다. 내 상황은 '세계'와 같은 패턴 목록을 반환하는 두 번째 쿼리가 있습니다. 어떻게 각 패턴의 수를 계산합니까?

제 최종 결과는 단지 2 열, 첫 번째 열 패턴, 두 번째 열 count_of_pattern이어야합니다.

답변

6

당신은 테이블에 하위 쿼리에 가입 like를 사용할 수 있습니다

SELECT p.pattern, count(a.comment) 
FROM (subquery here that returns "pattern" 
    ) p left outer join 
    TableA a 
    on a.comment like '%'||p.pattern||'%' 
group by p.pattern; 

이것은 pattern 와일드 카드 문자가없는 것으로 가정합니다. 그렇다면 연결을 수행 할 필요가 없습니다.

또한 일치 항목이없는 경우에도 모든 패턴이 반환되도록 left outer join을 사용합니다.

+0

이것은 완벽하게 작동했습니다! 고맙습니다. – user2268135

관련 문제