2012-10-10 54 views
4

使用INI函數可以使用ILIKE運行查詢嗎?例如:使用ILIKE和IN查詢

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 

我只使用子選擇來提高性能。不知道,如果查詢規劃是足夠聰明,使用相同的計劃,這個簡單的查詢(和你的Postgres的版本):

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