2012-10-10 2 views
4

IN 함수를 사용하여 ILIKE를 사용하여 쿼리를 실행할 수 있습니까? 예 :INI를 사용하여 ILIKE를 사용하여 쿼리

SELECT store_names 
FROM stores 
WHERE states ILIKE IN (SELECT location 
         FROM locations 
         WHERE stateID = 1) 

중첩 쿼리에서 반환 된 결과를 ILIKE 함수를 통해 실행하려고합니다. 이것을 할 수있는 방법이 있습니까?

답변

3

필요 이상으로 한 모퉁이를 생각하고 있습니다. 더 간단해질 수 있습니다 :

SELECT s.store_names, l.location 
FROM stores s 
JOIN (
    SELECT location 
    FROM locations 
    WHERE stateid = 1 
    ) l ON s.states ILIKE l.location 

성능을 향상시키기 위해 하위 선택 만 사용합니다.

SELECT s.store_names, l.location 
FROM stores s 
JOIN locations l ON s.states ILIKE l.location 
WHERE l.stateid = 1 

은 어쩌면 당신은 (EXPLAIN ANALYZE으로) 시도하고 그들이 같은 계획을 사용할지 여부를 다시보고 할 수 있습니다 : 쿼리 계획이 간단한 쿼리와 같은 계획을 사용 똑똑 확실 (및 포스트 그레스 버전)하지 않음 (그리고 동일한 수행)?

그리고 난 당신이 실제로 당신의 목적을 위해 %를 추가 할 필요가 의심이 :

... ON s.states ILIKE ('%' || l.location || '%') 
+0

큰 일, 감사합니다! – Utopia025

관련 문제